free()
을 사용하여 malloc()
을 통해 할당 된 메모리를 해제하려고했습니다.C에서의 free() 함수가 작동하지 않습니다.
구조체 중 일부는 해제되지만 일부는 그대로두고 자녀와 연결되어 있습니다. 또한 루트 (gRootPtr)
을 이진 트리로 해제하지 않습니다.
Xcode를 사용하여 이진 트리에서 사용하는 메모리가 해제되었는지 확인하고 if 문도 사용합니다. 내가 메모리를 무료로 사용하고
코드 : I 메모리가 해제되어 있는지 확인하기 위해 사용하고
void FreeMemory(InfoDefiner *InfoCarrier)
{
if ((*InfoCarrier) != NULL) {
FreeMemory((&(*InfoCarrier)->left));
FreeMemory((&(*InfoCarrier)->right));
free((*InfoCarrier));
}
}
코드입니다. 이 변수가 해제되지 않을 경우 체크 확인
if (gRootPtr != NULL) {
return 1;
}
else{
return 0;
}
* 기능 C에서 무료()가 작동하지 않습니다. * - 예, 가능합니다. –
if ((* InfoCarrier)! = NULL)'포인터가 NULL이 아닌'InfoDefiner'가 NULL인지 비교합니다. –
일반적으로 표준 라이브러리 함수 (특히 ** free ** 같은 코딩에 필수적인 함수)가 "작동하지 않는"경우 잘못된 것을 수행한다고 가정 할 수 있습니다. –