C++内存泄露 与 野指针总结
来源:互联网 发布:欧洲审美知乎 编辑:程序博客网 时间:2024/05/16 11:39
跟前辈交流收获心德,使用非常精炼的形式描述内存泄露与野指针的本质。在此与大家分享,欢迎多多交流。
下面给出理解描述:
指针变量作用域 被指向对象生命周期 造成的结果
情况一 超出作用域 生命周期未结束 内存泄露
情况二 在作用域内 生命周期结束 野指针
情况三 超出作用域 生命周期结束 正确的执行
情况一代码片段举例:
{
A *a = new A();
}
当上述代码执行完成时,程序离开指针变量a的作用域,这时a会自动被系统回收,但a当初所指向的对象A的生命周期却没有结束,因为没有进行释放操作,会一直占用一块堆内存,直到程序进程退出才会释放。这样就出现了内存泄露。如果这样的代码还处在一个被高频率执行的环境下(如循环体中),那么系统内存消耗将不断增加到最后系统没有可分配的内存空间,系统崩溃。
情况二代码片段举例:
{
A *a = new A();
A *b = a;
delete a;
a = NULL;
if(NULL != b){//此时指针b并不为空,此处检测无效
b->toString();//指针b指向了一块未定义的内存,对它进行调用后果未定义
}
}
在指针变量b的作用域内,所指向的对象A的生命周期被delete a结束掉,相应的堆内存释放,导致指针b成为了野指针。
补充阅读:
http://www.cnblogs.com/lintong/archive/2012/07/18/2596720.html
- C++内存泄露 与 野指针总结
- 内存泄露与野指针
- 野指针与内存泄露
- 野指针与内存泄露
- c++指针与内存泄露
- c++指针与内存泄露
- c/c++:内存泄露和野指针
- C存储空间管理--野指针,内存泄露
- C/C++ -- 内存泄露和野指针
- C++内存泄露 与野指针
- 内存泄露与野指针的思考
- 内存泄露、野指针
- 野指针、内存泄露
- c/c++:内存泄露和野指针的概念
- c/c++:内存泄露和野指针的概念
- c/c++:内存泄露和野指针的概念
- c/c++:内存泄露和野指针的概念
- c/c++:内存泄露和野指针的概念
- 《设计心理学》
- 虛擬鍵盤按下後藍色圖示無法消失
- casServer单点登录返回更多用户信息正确配置
- 内存对齐
- c语言的避雷针之指针习题精选
- C++内存泄露 与 野指针总结
- html5游戏开发--"动静"结合用地图块拼成大地图 & 初探lufyl
- ios debug release nslog
- Oracle 11g R2 for Windows安装配置
- PowerDesigner 反向工程
- oracle10Client安装过程奇艺问题解决
- UIAlertView
- BASE64编解码
- StrictMode( 严苛模式)