黑马程序员技术交流社区
标题:
野指针和内存泄露
[打印本页]
作者:
956251361
时间:
2016-1-2 21:31
标题:
野指针和内存泄露
1:野指针概念
野指针就是没有进行初始化的指针,这种指针没有指向具体的内存地址。
防止野指针的方法就是,定义指针变量的同时初始化为null,用完指针之后也将指针变量指向null。
int *p = NULL;
2:内存泄露
int main(int argc, const char * argv[])
{
int *p = (int*)malloc(4*sizeof(int));
return 0;
}
上面这段代码表示,定义了一个指针p,然后用malloc函数申请了16个字节的内存空间,
指针变量p存放在栈区,
malloc申请的16个字节的空间在堆区,在main函数结束后,变量p被释放了,但是堆区里的16个字节的空间还没有被释放,这就叫做内存泄露。
解决方法是,在指针变量p被释放之前,先释放堆区中的16个字节的内存空间。
使用free(要释放的空间的首地址)函数
例如:free(p); 这就把p指向的堆中的16个字节的内存空间释放了,就不会有内存泄露。
作者:
不土不木008
时间:
2016-1-3 22:32
soga,,懂了
作者:
明阳天夏
时间:
2016-1-4 12:50
不错,学到了
作者:
foolishlovepig
时间:
2016-1-4 13:17
感觉内存泄露在最开始的时候并不值得太注意啊。。嘛。。也算是好习惯吧
作者:
赵边妖
时间:
2016-1-4 16:41
野指针也有可能是指向僵尸对象的指针啊,所以在mrc的情况下在一个实例对象已经释放的时候,最好是把指向这个僵尸对象的指针置为nil啊
作者:
何来何往
时间:
2016-1-4 21:10
我喜欢总结指针的帖子! 在C语言中 当我们每次调用的时候 我感觉这样是不是更加好 if(NULL != p)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2