gpt4 book ai didi

c++ - 类中的指针/释放内存

转载 作者:行者123 更新时间:2023-11-30 01:59:30 25 4
gpt4 key购买 nike

这可能是指针 101 ...但奇怪的是(对我来说)很难找到答案。

在下面的例子中,所有的东西都会被正确地自动删除,还是我必须手动删除一些?这也包括 Test t ...

我的回答是肯定的,一切都已释放,除非我明确使用 new 但我不确定。

谢谢。

#include <iostream>
#include <vector>

class Obj
{
public:
Obj(int num) : m_num(num) {}

int getNum() { return m_num; }

private:
int m_num;
};

class Test
{
public:
Test(Obj *po) : m_po(po) {}

void print()
{
std::cout << m_po->getNum() << std::endl;
}

private:
Obj *m_po;
};

class Test2
{
public:
Test2() {}

void add(Obj &o)
{ m_vo.push_back(&o); }

void print()
{
for (size_t i=0; i<m_vo.size(); ++i)
std::cout << m_vo[i]->getNum() << std::endl;
}

private:
std::vector<Obj*> m_vo;
};

int main(int argc, char** argv)
{
Obj o1(1);
Obj o2(2);
Test t(&o1);
t.print();

Test2 t2;
t2.add(o1);
t2.add(o2);
t2.print();

//Would there be other uses of those objects t and t2 that could require a manual delete () ?

return(0);
}

最佳答案

您的分析很准确。您没有使用 newmalloc 或等效项。所以你不负责取消分配任何东西。

关于c++ - 类中的指针/释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16122444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com