首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C++中清理已删除的对象

如何在C++中清理已删除的对象
EN

Stack Overflow用户
提问于 2009-05-18 23:25:44
回答 7查看 3.3K关注 0票数 7

是否有可能将C++中已删除对象的内存清零?我想这样做是为了在单元测试中重现一个核心转储:

代码语言:javascript
运行
复制
//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();
EN

Stack Overflow用户

发布于 2009-05-19 02:21:21

在您的示例中,您可以这样写

'A->accessBMemberVariable‘这是拼写错误吗?它不应该是'a->accessBMemberVariable‘吗?

假设这是一个打字错误(否则整个设计看起来有点奇怪)。

如果你想验证'a‘是否被正确删除,最好改变你处理分配的方式,使用auto_ptr。这样,您将确保内容被正确删除:

代码语言:javascript
运行
复制
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的构造函数,其形式为

代码语言:javascript
运行
复制
B( auto_ptr<A>& a ) : m_a(a) {;}

哪里

代码语言:javascript
运行
复制
auto_ptr<A> m_a
票数 0
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/880269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档