我有以下代码如何删除已解除引用的对象?
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:增加了一些评论,让人们没有想到我庄严愚蠢
“func1()在某些情况下返回NULL”,但是您在不经过测试的情况下解除引用它? –
当然,我做了一个检查。我在那里做了很多东西,我只是不想把它放在这里,因为它没有关系。 – Morse
确切_how_是func1返回NULL吗?运算符'new'引发,它不返回NULL。 – Damon