我对以下测试片段有所怀疑。我使用节点指针指向函数test2返回的节点实例。为什么删除失败?C++中的内存管理错误
任何意见,将不胜感激。谢谢!
struct Node
{
int a;
};
Node& test2(Node &n)
{
Node *p = new Node;
p->a = n.a + 5;
return *p;
}
Node* test3(Node &n)
{
Node *p = new Node;
p->a = n.a + 5;
return p;
}
int main()
{
Node m;
m.a = 12;
Node n = test2(m);
Node *x = test3(n);
cout << m.a << ";" << n.a << ";" << x->a << endl;
delete x; //OK
x = &n;
delete x; //Error
return 0;
}
非常感谢! –
下来的选民照顾解释为什么? (如果可能,我想改进答案)。 –
我想提出您的评论。但我不知道为什么当我点击向上箭头时数字会变成负数... –