是否有可能将C++中已删除对象的内存清零?我想这样做是为了在单元测试中重现一个核心转储:
//Some member variable of object-b is passed-by-pointer to object-a
//When object-b is deleted, that member variable is also deleted
//In my unit test code, I want to reproduce this
//even if I explicitly call delete on object-b
//accessBMemberVariable should coredump, but it doesn't
//I'm assuming even though object-b is deleted, it's still intact in memory
A *a = new A();
{
B *b = new B(a);
delete b;
}
a->accessBMemberVariable();发布于 2009-05-19 02:21:21
在您的示例中,您可以这样写
'A->accessBMemberVariable‘这是拼写错误吗?它不应该是'a->accessBMemberVariable‘吗?
假设这是一个打字错误(否则整个设计看起来有点奇怪)。
如果你想验证'a‘是否被正确删除,最好改变你处理分配的方式,使用auto_ptr。这样,您将确保内容被正确删除:
auto_ptr<A> a( new A );
{
auto_ptr<B> b( new B(a) ); // B takes ownership of 'a', delete at scope exit
}
a->accessBMemberVariable(); // shouldn't do to well.以及B的构造函数,其形式为
B( auto_ptr<A>& a ) : m_a(a) {;}哪里
auto_ptr<A> m_ahttps://stackoverflow.com/questions/880269
复制相似问题