【发布时间】:2013-04-22 11:06:57
【问题描述】:
void f(const Fraction& a)
{ Fraction b = a;
Fraction* c = new Fraction(3, 4);
Fraction* d = &a;
Fraction* e = new Fraction(7, 8);
Fraction* f = c;
delete f;
}
我要删除哪些值? 我想我只删除了动态分配的 c ,其余对象在函数结束时自动销毁。
e 怎么样?它也是动态分配的,但我们没有任何用于 e 的删除运算符。 e 没有解除分配?
谢谢,
【问题讨论】:
-
delete不会删除变量。它删除指针变量指向的分配内存。 -
您有两个
news 和一个delete。你泄露了一个Fraction。 -
我猜第三行是不可能的。您正在使用(非常量)指针指向一个 const 对象。
-
一个更重要的问题:为什么要动态分配
Fraction,而它显然支持复制和分配? -
是的,那是我的错误。我试图找出哪些值被删除,哪些对象也被删除。谢谢!
标签: c++ memory-management memory-leaks new-operator