野指针的处理
2016-03-09 09:48
288 查看
野指针处理的三个要点:
定义指针时,把指针变量赋值为NULL
释放内存时,先判断指针变量是否为NULL
释放完毕后,把指针变量重新赋值为NULL
如果最后在main函数里面调用两次free_mem,程序就会报错,因为此时pa不为NULL,执行free(pa)会释放掉一块已经释放了的内存
定义指针时,把指针变量赋值为NULL
释放内存时,先判断指针变量是否为NULL
释放完毕后,把指针变量重新赋值为NULL
#include <stdio.h> #include <stdlib.h> void free_mem(char *p) { if (p != NULL){ free(p); p = NULL; // 这里的p只是形参,把NULL赋给形参并不影响实参 // 所以当函数执行完后,实参pa的值并不为NULL } } int main(void) { char *pa = NULL; pa = (char *)malloc(100); free_mem(pa); return 0; }
如果最后在main函数里面调用两次free_mem,程序就会报错,因为此时pa不为NULL,执行free(pa)会释放掉一块已经释放了的内存
相关文章推荐
- Xcode5以后ARC中的闪退问题,内存管理问题
- 黑马程序员——OC笔记之内存管理
- 空指针和野指针的区别
- QWidget析构函数存在的缺陷
- OC中内存管理问题之引用计数
- 指针delete后要设置为NULL
- ios笔记--C语言指针笔记
- C语言指针参数陷阱
- 解决EXC_BAD_ACCESS错误的一种方法--NSZombieEnabled
- C语言中常见的内存错误与解决方法
- 【踩雷】指针惹的货
- C/C++ 野指针、指针悬挂
- C/C++内存泄露和野指针的概念
- free 引发的思考
- c语言之野指针理解
- 野指针
- message sent to deallocated instance 0x100202dc0
- C中的野指针—如何避免
- c语言指针初级
- 野指针与空指针