动态内存管理中,哪种常见的错误会导致长尾效应,引发难以追踪的内存泄漏问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计584个文字,预计阅读时间需要3分钟。
3.1 解引用NULL指针的操作
3.1对NULL指针的解引用操作
#include <stdlib.h>
int main()
{
int* p = (int*)malloc(20);
//可能会出现对NULL指针的解引用操作
int i = 0;
for (i = 0; i < 5; i++)
{
p[i] = i;
}
free(p);
p = NULL;
return 0;
}
当我们这样写代码的时候,可以看到编译器报了一个警告:取消对NULL指针“p”的引用。
就是说,如果 p 是NULL指针的话,0+0 再解引用(此时i=0),就会出现对NULL指针的解引用操作,这样是非常危险的。所以malloc函数的返回值要判断。
本文共计584个文字,预计阅读时间需要3分钟。
3.1 解引用NULL指针的操作
3.1对NULL指针的解引用操作
#include <stdlib.h>
int main()
{
int* p = (int*)malloc(20);
//可能会出现对NULL指针的解引用操作
int i = 0;
for (i = 0; i < 5; i++)
{
p[i] = i;
}
free(p);
p = NULL;
return 0;
}
当我们这样写代码的时候,可以看到编译器报了一个警告:取消对NULL指针“p”的引用。
就是说,如果 p 是NULL指针的话,0+0 再解引用(此时i=0),就会出现对NULL指针的解引用操作,这样是非常危险的。所以malloc函数的返回值要判断。

