是否可以将C++中已删除对象的内存清零?我想这样做是为了在单元测试中重现一个coredump:
//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();
Run Code Online (Sandbox Code Playgroud)
bee*_*f2k 20
您可能应该覆盖delete运算符.
给定B类的示例:
class B
{
public:
// your code
...
// override delete
void operator delete(void * p, size_t s)
{
::memset(p, 0, s);
::operator delete(p, s);
}
};
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢litb指出这一点.