是堆棧或堆場景1中的funcVar?堆棧或堆棧分配不正確
我在問,因爲我懷疑它是,因此這可能是一個很好的方法來做事情,以最大限度地減少內存泄漏。也就是說,最好給東西自動分配位置,然後將代碼放在堆上的較高級別上,這樣可以間接地將事物放在堆上的較低級別,如場景1中所示。
在場景2中,刪除可能永遠不會被調用。通過使用代碼中的場景1,我希望儘量減少(不排除)問題在方案2
方案1
class Test{
int memVar = 1;
void func(){
int funcVar = 2;
SomeClass::someFuncThatCouldCrash();
}
};
Test* t = new Test();
方案2
class Test{
int memVar = 1;
void func(){
int* funcVar = new int(2);
SomeClass::someFuncThatCouldCrash();
delete funcVar; //May not free due to crash in line above;
}
};
Test t; //or Test* t = new Test()
目前尚不清楚此代碼的意圖。 'funcVar'永遠不會被分配給它的值使用,'someFuncThatCouldCrash'不會修改它。 – Xirema
謝謝,iirc和RyanP,我清理了代碼以便更清楚。 Xirema,這段代碼沒有做有用的事情,我保持精簡,保持清潔並專注於分配和內存清理。 – code
_is funcVar堆棧或堆場景1?_有人會說它既不是堆棧也不是堆,因爲標準沒有提到它們中的任何一個。 – skypjack