總是刪除指針,即使它只是在函數調用堆棧? 功能堆棧發佈時不會消失嗎?即使在函數堆棧中,也必須刪除指針嗎?
// just Simple class
class CSimple{
int a;
}
// just simple function having pointer.
void simpleFunc(){
CSimple* cSimple = new CSimple();
cSimple->a = 10;
//.. do sth
delete cSimple; // <<< Always, do I have to delete 'cSimple' to prevent the leak of memory?
}
void main(){
for(int =0 ; i< 10 ; i++){
simpleFunc();
}
}
1.是。無論內存泄漏源於何處,內存泄漏都是內存泄漏。 2.排序。指針是「釋放」的,指向的對象不是。 – owacoder
'new'分配的所有內存必須使用'delete'釋放。 –
'delete cSimple'不會刪除指針,指針會自動分配,並且在聲明它的範圍時將被釋放。但它會刪除動態分配的'CSimple'的新實例,當'cSimple'超出範圍時它將不會被釋放。只要你有一些方法來刪除你的每個'new CSimple();'實例(和),就不會有泄漏。 – George