C에서 NULL 포인터를 해제하는 것이 좋은 습관입니까?
포인터가 malloc()
ed 인 경우 해제하는 C 함수를 작성 중 입니다. 포인터는 NULL (오류가 발생하고 코드에 아무것도 할당 할 기회가없는 경우)이거나 malloc()
. free(ptr);
대신 사용 하는 것이 안전 if (ptr != NULL) free(ptr);
합니까?
gcc
를 사용해도 전혀 불평하지 않지만 -Wall -Wextra -ansi -pedantic
좋은 습관입니까?
ISO-IEC 9899 의 C 표준 7.20.3.2/2 인용 :
void free(void *ptr);
경우
ptr
널 포인터가 아무런 조치가 발생하지 않습니다.
을 확인하지 마십시오. NULL
읽을 더미 코드 만 더 추가되므로 나쁜 습관입니다.
그러나 & co를 사용할 때는 항상NULL
포인터를 확인 해야합니다 malloc
. 이 경우 NULL
무언가 잘못되었다는 의미이며, 사용 가능한 메모리가 없을 가능성이 높습니다.
NULL
전화하기 전에 확인하지 않는 것이 좋습니다 free
. 검사는 코드에 불필요한 혼란을 추가하고 free(NULL)
안전을 보장합니다. C99 표준의 섹션 7.20.3.2/2에서 :
free 함수는 ptr이 가리키는 공간을 할당 해제, 즉 추가 할당에 사용할 수 있도록합니다. ptr이 널 포인터이면 조치가 발생하지 않습니다.
무작위로 인터넷 검색을하면 http://linux.die.net/man/3/free 가 나타납니다.
ptr이 NULL이면 작업이 수행되지 않습니다.
제 생각에는 적어도 당신의 경우에는 아닙니다.
메모리를 할당 할 수 없다면 free를 부르기 전에 WAY를 확인해야합니다.
참고 URL : https://stackoverflow.com/questions/6084218/is-it-good-practice-to-free-a-null-pointer-in-c
'Development Tip' 카테고리의 다른 글
클래스 이름을 정의하기 위해 변수 String을 사용하여 JavaScript 객체를 만들려면 어떻게해야합니까? (0) | 2020.11.16 |
---|---|
SASS에서 속성 선택기를 어떻게 정의합니까? (0) | 2020.11.16 |
루비의 문자열에서 작은 따옴표와 큰 따옴표를 이스케이프합니까? (0) | 2020.11.16 |
RailwayJS 대 TowerJS (0) | 2020.11.16 |
Composer의 자동로드 사용 (0) | 2020.11.16 |