【发布时间】:2014-05-14 17:35:57
【问题描述】:
我有一些非常有趣的代码 sn-ps。当我删除一个对象时,它的值变为零,但对象指针仍然可以被操作,这很奇怪吗?
#include <iostream>
#include <vector>
using namespace std;
class B
{
public:
vector<double> vec;
};
class A
{
public:
B b;
};
int main()
{
A* a = new A();
a->b.vec.push_back(1);
a->b.vec.push_back(2);
A* a1;
delete a;
cout << "before" << endl;
a1= a;
cout << a1->b.vec[0] << endl;
cout << "after" << endl;
return 0;
}
输出:
before
0
after
我删除a后,它的值变为零,但它仍然可以被引用?不知道为什么?
【问题讨论】:
-
访问被破坏的对象是未定义的行为。你不走运,因为程序运行没有错误。
标签: c++ memory-leaks delete-operator