이론적으로 나는 말할 수 있습니다
free(ptr);
free(ptr);
이미 해제 된 메모리를 해제하기 때문에 메모리 손상입니다.
하지만 만약
free(ptr);
ptr=NULL;
free(ptr);
OS가 정의되지 않은 방식으로 동작하기 때문에 무슨 일이 일어나고 있는지에 대한 실제 이론적 분석을 얻을 수 없습니다. 내가 무엇을하든,이 메모리 손상이 아닌가?
NULL 포인터를 해제하는 것이 유효합니까?
delete NULLC ++에서는 유효하지 않습니다. delete는 구체적인 유형의 null 포인터 값에 적용될 수 있지만 NULL. delete (int*) NULL합법적이지만 delete NULL.
ptr메모리를 가리키고 호출하지 않으면 free메모리가 누수됩니다. 로 설정 NULL하면 메모리에 대한 핸들이 손실되고 누출됩니다. ptr 일NULL 이 발생하면 호출 free은 작동하지 않습니다.
free(ptr)함께 ptr = NULL. 아무도 그런 말을하지 않았습니다.