Qt 釋放視窗資源

2021-08-25 07:26:28 字數 848 閱讀 6042

qt: 釋放視窗資源

1. 對於使用指標,使用new建立的視窗,當然可以使用delete顯示的釋放其占用的資源:

widget *w = new widget();

delete w;

2. 對於使用指標,使用new建立的視窗,還可以使用qwidget::setattribute方法來當視窗關閉後自動釋放其占用的資源,而不使用者顯示的去呼叫delete釋放,此方法當然也會呼叫視窗的析構函式:

widget *w = new widget();

w->setattribute(qt::wa_deleteonclose);

這可以用於非模態對話方塊,因為非模態對話方塊如果是用指標形式建立,但是再接著delete的話,視窗就沒了,如果不使用delete釋放視窗占用的資源,又會贊成洩漏。如果使用普通變數建立,同樣的也因為變數作用域馬上就結束而視窗也沒了,另一種方法就是使用多執行緒,不過這個的代價大了點。所以這種技術在建立非模態對話方塊上是非常典型的運用。

測試方式:在widget中分配大量的記憶體,顯示與關閉多個此類視窗,看看任務管理器裡此程式的記憶體變化情況,是否真正的釋放了占用的記憶體(當然釋放了)。在c++中使用new分配記憶體時,如array = new double[length],此時,給array的記憶體實際上並沒有真正的分配,必須等到第一次使用這些記憶體後才會真正地為其分配物理記憶體,如:memset(array, 1, length * sizeof(double))

3. 視窗的記憶體管理交給父widget:

widget *w = new widget(parent);

但這時,如果父widget不結束,這個視窗的資源一直會占用著。

至於使用哪種技術來釋放視窗的資源,要看具體的運用時,哪種方式更合適。

QT 關閉視窗與資源釋放問題

對於使用指標,使用new建立的視窗,當然可以使用delete顯示的釋放其占用的資源 widget w new widget delete w 對於使用指標,使用new建立的視窗,還可以使用qwidget setattribute方法來當視窗關閉後自動釋放其占用的資源,而不使用者顯示的去呼叫delet...

Delphi釋放資源

經過這段時間對delphi中free 和 release 的仔細學習,先總結如下 1。form.free直接釋放資源後,呼叫ondestroy事件,但是沒有將form指標改為nil 2。form.release 等待資源不再使用後釋放資源,同樣不修改form指標為nil,所以在destroy中最好使...

C 資源釋放

c 記憶體釋放,指標的存在,一直都是很困擾的乙個問題,怎樣釋放資源,成了很大的難題,本文拋磚引玉,整理自己對記憶體的一些理解,並記錄下來,不對之處,還望不吝指正。在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。棧,在執行函式時,函式內區域性變數的儲存單元都可...