我知道这应该是一个微不足道的问题,但需要找出原因。
以下代码由失败编译
a.out(93143) malloc: *** error for object 0x7fff5af8293f: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
代码:
#include <iostream>
using namespace std;
class A
{
};
class B
{
private:
A a;
public:
B(){a=*new A();}
~B(){delete &a;}
};
int main()
{
B b;
}
根据即时评论,我意识到“new”中动态分配的对象在分配给“a”后立即失去了它的所有者。现在,如果我确实想要一个对象而不是指向“A”的指针,那么最好的解决方案是什么?