以下代码有什么问题?
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