C++:删除动态分配的类时,不在堆上的私有(private)成员也会被删除吗?

标签 c++ memory-management

例如,假设您有:

Class Test
{
     public:
     Test();
     private:
     int x = 0;
     int y = 3;
}

您使用类似的东西声明一个 Test 实例

Test * RRR = new Test();

比方说你输入的那一行

delete RRR;

这是否也删除了x和y占用的内存?

最佳答案

简短的回答是肯定的,但严格来说,x 和 y 没有被删除。他们占用的内存将被释放,因为他们是结构的数据成员。

即使你不定义析构函数,编译器也会为你合成一个默认的析构函数,释放结构体占用的内存。

关于C++:删除动态分配的类时,不在堆上的私有(private)成员也会被删除吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19371162/

相关文章:

c++ - 使用 printf 样式格式设置 std::string 的内容

c++ - 从外部更改命名空间变量值 (C++)

c++ - 通过 make_shared 用 shared_ptr 包装动态数组

c - 我什么时候使用扩展数据?

c++ - 了解堆(优先级队列)中的向上和向下渗透函数

c++ - 从命令行输入分配二维数组

空 PHP 脚本上的 PHP memory_get_usage()

memory-management - Go 内存消耗管理

c++ - 构造函数内部的内存分配?

python - Pandas 数据帧到内存中的 Parquet 缓冲区