【发布时间】:2011-08-19 11:11:43
【问题描述】:
我有以下代码
MyObject * func1() {
MyObject * obj = new MyObject();
// lots of stuff here
return obj;
}
MyObject func2() {
MyObject * obj = func1();
// even more stuff here
return *obj;
}
void main() {
MyObject obj = func2()
}
当我从here 得到它时,此代码正在泄漏。会这样吗:
MyObject * func1() {
MyObject * obj = new MyObject();
// lots of stuff here
return obj;
}
MyObject func2() {
MyObject * obj = func1();
// even more stuff here
MyObject obj_r(*obj);
delete obj;
return obj_r;
}
void main() {
MyObject obj = func2()
}
解决问题?还是有其他不错的解决方案?
在 b4 中:不,我不能让它从头开始引用,因为 func1() 在某些情况下返回 NULL。
upd:添加了一些 cmets,这样人们就不会认为我非常愚蠢
【问题讨论】:
-
"func1() 在某些情况下返回 NULL",但您在没有测试的情况下取消引用它?
-
我当然会检查一下。实际上我在那里做了很多事情,我只是不想把它们都放在这里,因为它们无关。
-
究竟如何 func1 返回NULL?运算符
new抛出,不返回NULL。 -
@More 那么请提供更多信息。为什么要动态分配立即复制到堆栈并丢弃的东西?
标签: c++ memory-leaks