野指针的问题
来源:互联网 发布:java线程池不关闭 编辑:程序博客网 时间:2024/04/29 07:08
林锐的《高质量C++/C编程指南》中的一个例子
#include <iostream>
using namespace std;
class A
{
public :
void Func(void){cout << "Func of class A/n/n";}
};
void Test(void)
{
A *p;
{
A a;
p = &a;
}
p->Func();
}
int main(void)
{
Test();
return 0;
}
执行p->Func()时,对象a已消失,而p是指向a的,所以就成了野指针
但奇怪的是作者在运行是没有出错,说可能是与编译器有关
我添加了一个整型指针,自己测试了一下:
#include <iostream>
using namespace std;
class A
{
public :
void Func(void){cout << "Func of class A/n/n";}
};
void Test(void)
{
A *p;
int *pi;
{
A a;
p = &a;
int ii = 90;
pi = ⅈ
}
p->Func();
cout << "*pi = " << *pi << endl;
}
int main(void)
{
Test();
return 0;
}
我运行的时候也没有出错
后面添加的整数指针的测试也没有错
但是我试着把变量声明和变量赋值的过程提出来后,A指针没有错,整型指针却出错了:
#include <iostream>
using namespace std;
class A
{
public :
void Func(void){cout << "Func of class A/n/n";}
};
A *p;
int *pi;
void forTest(void)
{
A a;
p = &a;
int ii = 90;
pi = ⅈ
}
void Test(void)
{
forTest();
p->Func();
cout << "*pi = " << *pi << endl;
}
int main(void)
{
Test();
return 0;
}
指针指向的内容超出作用域范围,或是指针被释放之后,究竟会产生怎样的操作呢,“内容消失”代表什么?
是用其他的内容填充呢?还是内容不变,空间留着以后用。
- 野指针的问题
- 野指针的问题
- 关于“野指针”的问题
- 野指针的问题探讨
- 指针的指针问题研究
- 野指针所引起的问题
- “野指针”(Dangling pointer)的问题
- 野指针所引起的问题
- C/C++中野指针的问题
- Qt::WA_DeleteOnClose 造成的野指针问题
- Qt::WA_DeleteOnClose 造成的野指针问题
- Qt::WA_DeleteOnClose造成的野指针问题
- 指针的问题!
- 指针数组的问题
- 指针的指向问题
- 一个指针的问题
- 指针的赋值问题
- 指针+1的问题
- 感染U盘程序
- 项目经理的第一个精神准备
- 如何运用Form 表单认证
- VMware中Redhat9下安装VMTools
- 导出ORACLE的数据字典到文本(可直接拷贝到EXCEL)
- 野指针的问题
- 重新学习C++
- “JAVA” 的真正由来
- 在Windows Presentation Foundation(WPF)中增加Month Calendar月历控件
- 如何点击按钮弹出新窗口,输入数据后返回并刷新页面?(C#代码)
- 使用 PreparedStatement 进行模糊查询
- 做根网线
- 今日正式加入CSDN
- 英语口译备考指南