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

以下代码有什么问题?

null

#include<stdio.h>
int main()
{
int *p = ( int *) malloc ( sizeof ( int ));
p = NULL;
free (p);
}


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

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

    free(p);
    p = NULL;

这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享