【linux】c++ 内存管理(三)
来源:互联网 发布:中国数据域名管理平台 编辑:程序博客网 时间:2024/05/21 14:02
5.杜绝野指针
“野指针”不是NULL指针,是指向“垃圾”内存的指针。野指针的成因:
(1)指针变量没有被初始化,任何指针变量刚刚被创建的时候不会自动成为NULL指针。它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应该被初始化,要么将指针设置成NULL,要么让它指向合法的内存。如:
char *p = NULL;
char *str = (char *)malloc (100);
(2)指针p被free或delete之后,没有置为NULL,让人误以为p是个合法的指针。
(3)指针操作超越了变量的作用范围。
class A
{
public:
void Func ( void )
{
cout << "Func of class A" << endl;
}
}
void Test ( void )
{
A *p;
{
A a;
p = &a; // 注意a的生命周期
}
p->Func(); // p是野指针
}
函数Test在执行语句p->Func(); 时,对象a已经消失,而p是指向a的,所以p就成了"野指针"了。
6.内存耗尽怎么办?
如何在申请动态内存时找不到足够大的内存块,malloc和new将返回NULL指针,宣告内存申请失败。通常有三种方式处理"内存耗尽"问题。
(1)
(2)
(3)
- Objective-C 入门(三)内存管理
- 【linux】c++ 内存管理(三)
- Linux C 内存管理
- Linux C 内存管理
- Linux C 内存管理
- Linux c内存管理
- Linux C 内存管理
- Objective C内存管理进阶(三): 调试内存泄露
- Objective C内存管理进阶(三): 调试内存泄露
- Objective C内存管理进阶(三): 调试内存泄露
- 从C/C++到Objective-C(三)--- 内存管理
- Linux C面试题(内存管理)
- Linux C面试题(内存管理)
- Linux C面试题(内存管理)
- Linux C面试题(内存管理)
- LINUX C 内存管理(上)
- linux c—内存管理(下)
- linux C复习:内存管理
- 我的CSDN
- request.mappath , request.physicalapplicationpath and Server.mappath
- 我看MFC的过去、现在和未来
- (转)十年学会程序设计
- SQLserver2005 类别不支持集合(或类别对象为远程对象) (异常来自 HRESULT:0x80040110 (CLASS_E_NOAGGREGATION)) (Microsoft.SqlServer.SqlTools.VSIntegration)
- 【linux】c++ 内存管理(三)
- 如何修复损坏的硬盘分区
- 最近的杰作
- 求注册码
- 新工作
- 生命的价值
- matlab中图像读写
- django安装
- DIV+CSS中标签ul ol li dl dt dd用法