2015-06-30 42 views
1

我已經使用QT Creator創建了一個C++對象數組,這個對象設置了一個簡單的益智遊戲的網格。當一個遊戲會話完成時,我想開始一個新的遊戲,我用操作符delete刪除數組的內存使用情況,所以我防止任何內存泄漏。但是,由於我的數組是全局的,並且在每次新遊戲會話中都會動態地重新渲染它,這是否會導致陣列不再可用?我需要重新認識它嗎?如何從內存中刪除指針並在C++中稍後恢復它們

+5

沒有看到你的動態分配,全局數組等,很難知道你在說什麼。你能舉一個你正在談論的問題的最簡單的例子,並澄清你的問題嗎? – CoryKramer

+1

到底如何聲明數組?如果你在堆上聲明它(用'new'),那麼是的,你必須重新聲明它;如果你在堆棧中聲明它(沒有'new'),那麼調用'delete'會導致你的問題比內存泄漏更嚴重。 – Beta

+0

是的,它是一個指針數組:QPushButton * box [256] –

回答

2

我猜你的「全球性」是指向你初始化點菜陣列...

Data* p; 

您以後初始化:

p = new Data[n]; 
p[0] = get_first_value(); 
... 

一個遊戲,你可以刪除後它:

delete[] p; 

當你準備開始一個新的遊戲,你可以再次使用它 - 相同的聲明 - 通過分配我噸至解決新分配的內存:

p = new Data[n]; 
p[0] = get_first_value(); 
... 

n值不必每場比賽一樣,如果出於某種原因你決定你需要更多或更少的數據。

5

是的。整個使用delete的要點是告訴計算機:「嘿,我以前使用過這個內存,但我不再需要它了,永遠不要做任何你想要的東西。」

然後計算機可以回收該內存用於任何它認爲合適的目的。

換句話說,如果你需要再次使用內存,delete吧!

相關問題