c++ - 如何从 C++ 中的堆中删除完整的对象?

标签 c++ memory heap-memory

假设我有这样的东西:

a = new A(); 
a->b = new B(); 
a->b->c = new C();

如果我调用:

delete(a)

它还会从内存中删除 b 和 c 吗?我如何确定它们都消失了?

这是我大学类里面出现的一个问题,由另一名学生提出。没有提供更多信息。我想那时没有确定的答案,因为我无法告诉您有关 A、B 或 C 析构函数的信息

最佳答案

使用

class A
{
    std::shared_ptr<B> b;
}

你不需要 A 或 B 的析构函数。默认的就可以了。

关于c++ - 如何从 C++ 中的堆中删除完整的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44572323/

相关文章:

c++ - QT Embedded : How to generate an event to ESC (Escape), F1 等按键

c++ - 0xC0000005 : Access violation reading location 0x00000000

c++ - C++进程的读内存

c++ - 填充指向 vector 的 vector

java - Java 中的单词列表生成器、堆大小错误

c++ - 何时以及为何在堆 C++ 上声明成员变量

c++ - 启用 dll 的 gflags 完整堆不起作用

c - 使用 Malloc 通过 GMP 处理大量数据

c++ - 具有堆分配的大型数组的段错误

c++ - 在面向对象编程中分配新内存时处理代码中不同构造函数导致的错误