例如,假设您有:
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/