📜  C |动态内存分配|问题7

📅  最后修改于: 2021-05-25 23:00:01             🧑  作者: Mango

以下代码有什么问题?

#include
int main()
{
    int *p = (int *)malloc(sizeof(int));
  
    p = NULL;
  
    free(p);
}

(A)编译器错误:free不能应用于NULL指针
(B)内存泄漏
(C)悬空指针
(D)程序可能会崩溃,因为对NULL指针调用了free()。答案: (B)
说明:可以为NULL指针调用free(),因此调用自由函数没有问题。

问题是内存泄漏,为p分配了一些未释放的内存,但是指针被分配为NULL。正确的顺序应如下:

free(p);
    p = NULL;

这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。