c언어 중 free

c언어 공부하고 있는데요, 

며칠 전에 free 를 배웠는데, 포인터 쓰고 free() 안에 넣으면 메모리에서 해제되는거에요?

근데 왜 null 값을 넣어주는건지요? 

가령....
Pokemon *ptr = malloc (sizeof(Pokemon));
free(ptr);
ptr = null;

여기 free를 해주면 heap에 저장되어있는 주소값이 사라지는거 아닌가요???




cccfff.2022.10.04.조회수 923회

댓글목록

profile_image

Jojo님의 댓글

Jojo 작성일

free를 해주면 heap에 저장되어있는 주소값이 없어진다기 보다는 본인이 malloc했던 메모리가 해지된다고 보시면됩니다(사용권한 없어짐).

​null을 넣어주는이유는 별다른건 없습니다.
free를 했다는 것을 명시하는 일종의 본인코드에서의 룰 같은건데요.
​보통 그래서 아래와 같은 코드를 작성합니다.(2번 free되는것을 방지)

if(ptr != NULL)

{

  free(ptr);

  ptr = NULL;

}