我应该清理 ivar C++向量...?

发布于 2024-10-27 18:43:50 字数 175 浏览 6 评论 0原文

如果将向量放入堆栈中,它将在其自动变量作用域结束时自动销毁。

如果我将向量放入类中怎么办?

class A
{
    vector<B> bs;  // B is POD struct.
};

我应该手动清理它吗?如果是这样,我该怎么办?

If a vector is placed in stack, it will be destructed automatically at the end of its automatic variable scope.

What if I have placed a vector in a class?

class A
{
    vector<B> bs;  // B is POD struct.
};

Should I clean it up manually? If so, how should I do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

古镇旧梦 2024-11-03 18:43:50

当调用封闭类的析构函数(即 A 的析构函数)时,该向量 bs 将被破坏。

void f()
{
    {
          A a;
          //working with a;

    }//<--- here a goes out of scope, so it's destructor is called; 
            //so not only a is destructed but also a.bs
}

That vector bs will be destructed when the enclosing class's destructor (i.e A's destructor) will be called.

void f()
{
    {
          A a;
          //working with a;

    }//<--- here a goes out of scope, so it's destructor is called; 
            //so not only a is destructed but also a.bs
}
萌吟 2024-11-03 18:43:50

确保向量中使用的每个 B 类在析构函数中删除自己分配的空间,这样当向量超出范围时,就不会出现内存泄漏

Make sure each B class that you use in the vector, deletes its own allocated space in the destructor, so when the vector goes out of scope, you wont be left with memory leaks

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文