我已經在int main聲明瞭動態數組,所以我的問題是如何在析構函數中刪除和釋放該數組?否則我應該在主內部釋放它。
delte [] ptr ---
請回答這個簡單的問題給我。在此先感謝析構函數刪除主動聲明的動態數組
我也實現了類,但在主內部聲明動態數組,所以什麼是析構函數的使用?我應該刪除內部析構函數嗎?
我已經在int main聲明瞭動態數組,所以我的問題是如何在析構函數中刪除和釋放該數組?否則我應該在主內部釋放它。
delte [] ptr ---
請回答這個簡單的問題給我。在此先感謝析構函數刪除主動聲明的動態數組
我也實現了類,但在主內部聲明動態數組,所以什麼是析構函數的使用?我應該刪除內部析構函數嗎?
該程序本身沒有析構函數。它從main
開始並在main
結束時結束。如果您需要取消分配你的main
開始分配一些內存,你應該main
結束之前做到這一點:
int main() {
int* arr = new int[10];
// Do lots of work
delete[] arr;
}
當然,這將是更好,如果你使用RAII封裝在一個類中該內存分配,所以你不必手動處理它。事實上,類型已經存在 - 標準庫容器(如std::vector
或std::array
)。
那麼什麼是在類中使用析構函數?我應該在這種情況下不使用它嗎? – user3215228
@ user3215228類的析構函數應該釋放它在其構造函數中分配的所有內存。 –
@ user3215228:如果您使用std :: vector(如您應該那樣),那麼* std:vector *析構函數將自動處理內存釋放。使用像std :: vector這樣的標準容器類將大大減少您必須編寫自己的析構函數的次數。 –
什麼析構函數? –
'main'不是一個對象,它沒有析構函數。請在返回之前將其刪除。 (實際上,因爲程序正在退出,無論如何內存都會被操作系統回收,但它自己做的很好的形式和習慣。) – TypeIA
析構函數(和構造函數)是對象(&結構)的成員函數。 'main'是一個經典函數,就像C中一樣。沒有這樣的析構函數。 –