我有以下代碼如何刪除已解除引用的對象?
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