以下代码有什么问题?
#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基础课程》。