内存管理,杜绝野指针,让我们更加了解指针。
来源:互联网 发布:龙霸网络电视破解版 编辑:程序博客网 时间:2024/05/22 15:56
“野指针”不是NULL 指针,是指向“垃圾”内存的指针。人们一般不会错用NULL
指针,因为用if 语句很容易判断。但是“野指针”是很危险的,if 语句对它不起作用。
“野指针”的成因主要有两种:
(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 就
成了“野指针”。但奇怪的是我运行这个程序时居然没有出错,这可能与编译器有关。
- 内存管理,杜绝野指针,让我们更加了解指针。
- c++ 内存管理:6、杜绝“野指针”
- 杜绝“野指针”
- 杜绝 野指针
- 杜绝“野指针”
- 7.7 杜绝“野指针”
- 杜绝“野指针”
- 智能指针不一定能杜绝内存泄漏
- 结构体中得函数指针,让我们更加方便~
- C语言:动态内存会被自动释放吗?杜绝“野指针”
- 动态内存会被自动释放吗?杜绝“野指针”(转载)
- C语言:动态内存会被自动释放吗?杜绝“野指针”
- 内存管理与指针
- 内存管理详解 指针
- 指针与内存管理
- 内存管理-智能指针
- 指针和内存管理
- 高质量C++编程之(7.7 杜绝“野指针”)
- 2011mba mpa mpacc大纲解析
- IT人士注意-身体求救信号-好好珍惜生命
- 最简单的进制转换函数
- 判断平台
- pmp,mpa
- 内存管理,杜绝野指针,让我们更加了解指针。
- 2011年全国管理类专业学位(mba、mpa、mpacc)联考综合能力考试
- 怎样实现表格背景图片的拉伸效果
- JDK JRE J2SE SDK 区别
- 关于自定义CSS的写法
- AutoCompleteTextView自动文本匹配
- 一种保持VC对话框布局的简便方法
- Python自带IDE——IDLE的快捷键
- 创建关联的UIPickerView 显示省市