C++:删除动态分配的类时,是否也会删除不在堆上的私有成员?
C++: When deleting a dynamically allocated class, do private members that aren't on the heap get deleted as well?
例如,假设您有:
Class Test
{
public:
Test();
private:
int x = 0;
int y = 3;
}
使用类似的东西声明测试的实例
Test * RRR = new Test();
假设您键入的某个地方
delete RRR;
这是否也会删除 x 和 y 占用的内存?
简短的回答是肯定的,但严格来说,x和y不会被删除。它们占用的内存将被释放,因为它们是结构的数据成员。
即使您没有定义析构函数,编译器也会为您合成一个默认析构函数,这将释放结构占用的内存。
相关文章:
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- std::ofstream 作为类成员删除复制构造函数?
- 删除C++继承中虚拟类成员的代码重复
- 在对象指针上调用 Delete 是否会递归删除其动态分配的成员
- 我可以在此模板中删除此类成员吗?
- 在运行时有条件地删除类成员或跳过调用该成员对象的构造函数
- 指向重载静态成员的函数指针 - 在unique_ptr中用作自定义删除器
- 派生的成员 通过指向基、static_cast、crtp、删除模板的指针
- 删除类成员的动态分配内存的最佳方法是什么
- C++类析构函数删除成员(如果"owner"?
- 在Visual Studio中删除成员std::vector::d ata()
- 为什么删除成员变量的复制构造函数不会阻止默认的复制构造函数
- 队列类中的非空删除成员函数
- 基于模板参数删除成员
- C++11 中已删除成员函数的确切语义是什么?
- 在C++中正确删除成员数组
- C++删除成员函数中的临时节点
- 在c++中,从结构体中删除成员会产生错误
- 如何删除成员函数中的成员数组,以便重新分配
- 状态设计模式 - 不想删除成员类中的此指针