C++内嵌对象的内存分配问题

来源:百度知道 编辑:UC知道 时间:2024/05/19 23:01:36
class A
{};

class B
{
A *m_pa;
public:
void SetA(A *pa);
};
请问, m_pa何时分配,何时释放比较好,有没有一个好的模型或策略?
本人是这么想的,如果我在B外面分配了一个A,然后set给B,这样在B的构造函数里就不应该给A分配,析构函数里也不应该释放A.此时A在外卖分配,也在外面释放.但我设计这个类的时候,我想既然有了setA,就不应该在构造函数里分配.否则,如果调用setA就会造成内存泄漏. 这似乎又成了关于这个setA的问题了.

我觉得应该在SetA()里面 只在当你需要的时候再分配内存
在析构的时候加个判断 如果当前指针有值就就释放它

因为有可能在使用B类的时候根本就不需要A这个类,如果在构造函数里面分配的话我觉得有点儿不太好

"模型","策略",好专业的名词啊.我只知道在构造函数中分配,析构函数中释放.

在构造函数中分配内存,析构函数中释放,另外需要重载赋值运算符,默认的赋值运算符是值拷贝,这样被赋值的对象中的内存就泄露了

构造函数里初始化,析构函数里释放