c++ - 取消分配类的实例是否也会取消分配由其对象/方法动态分配的任何内存?

标签 c++ memory-management

例如,尽可能简化:

class thing{
    public:
        char* arr;
        thing();
}

thing::thing{
    arr = new char[1000];
}

如果我创建一个动态分配的 thing 实例,然后使用 delete 释放它,构造函数动态分配的内存是否也会被释放,或者我必须先释放 arr 吗?

最佳答案

不像那个类写的那样。您将需要声明一个执行 delete [] arr; 的析构函数 - 您应该遵循一三条规则(如果添加移动语义,则应遵循五条规则)。

关于c++ - 取消分配类的实例是否也会取消分配由其对象/方法动态分配的任何内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32818106/

相关文章:

c++ - 为什么 "partial RVO"没有执行?

node.js - 确保 NODE_OPTIONS --max-old-space-size 正常工作

c++ - 如果 CFile::Write 抛出异常会发生什么?

c++ - 模棱两可的函数模板

ios - 内存随着自定义 View 不断增加

ios - 重复调用 "GPUImagePicture ProcessImage"内存警告导致App崩溃

multithreading - 如何减少 DFS 和 BFS 等图遍历算法的缓存未命中?

c++ - 编写一个函数来删除单向链表中的节点(尾部除外),只允许访问该节点

c++ - Qt中的空文件

c++ - 不同编译器中标准容器的不同 noexcept 属性