c++在析构函数中删除 vector 类成员内存

标签 c++ memory-management vector

我有一个包含 vector 成员变量的类。 我知道存储在堆栈上的 vector 将是 当他们离开时清理(即释放内存) 范围,但我不确定是否破坏了 类对象——包含一个 vector 成员变量—— 被认为超出范围。

如果不是,销毁的适当方法是什么 vector ?

如:

class fred {
    char *stuff;
    vector<int> v;

    fred() : stuff(), v() {}
    ~fred() {
         if (stuff) free(stuff);
         // now how do I clear up the vector v?  Will it be done automatically?
    }
 }

最佳答案

vector 已经为您清理干净了!当一个类被破坏时,它的所有成员的析构函数也会被调用。在这种情况下,调用了 v 的析构函数,它清除了它分配的任何内容。

当您到达析构函数的结束 } 时,将调用非静态成员的 dtor,顺序与声明它们的顺序相反。然后调用您的基类析构函数(如果存在)。

关于c++在析构函数中删除 vector 类成员内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10990172/

相关文章:

委托(delegate)构造函数中的 C++ 大括号括起来的初始值设定项列表

c++ - 什么会导致隐式/默认复制构造函数在 POD 结构上失败?

c++ - 定义函数的时候,是不是也声明了?

iphone - 这个错误是什么意思? malloc : *** error for object 0x103f000: pointer being freed was not allocated

Delphi - 结构的字符串没有被释放 [FastMM 管理器]

c++ - 为无效迭代器定义了哪些操作?

c++ - 我使用 ifstream 的模板函数有什么问题?

c++ - 如何将 "define"定义为宏,可以吗?

c++ - 确定 minimax tic-tac-toe 中的正确位置

iphone - iOS保留,分配