qDeleteAll 之後必須清空容器

2021-09-07 14:39:36 字數 1907 閱讀 1616

qdeleteall應用示例

qdeleteall原始碼如下:

1 template 2 q_outofline_template void

qdeleteall(forwarditerator begin, forwarditerator end)39

}1011 template 12 inline void qdeleteall(const container &c)

13

示例**如下: 7

class

personinfo815

16 ~personinfo()

1726}27

private:28

intm_nid;

29qstring m_name;

30 qwidget*m_pwidget;

31};

3233

int main(int argc, char *ar**)

3444

45 qdeleteall(map); //

1.釋放記憶體

46 qdebug() << "

after qdeleteall size ::

"<< map.size() <47 map.clear(); //

2.必須清空

48 qdeleteall(map); //

3.再次釋放記憶體

4950

return

a.exec();

51 }

列印結果如下:

1 construct personinf ::  0x3bdc20

2 construct personinf :: 0x3c0308

3 construct personinf :: 0x3bfe08

4 construct personinf :: 0x3c0a88

5 construct personinf :: 0x3c1248

6 construct personinf :: 0x3c1738

7 construct personinf :: 0x3c1bb8

8 construct personinf :: 0x3c2420

9 construct personinf :: 0x3c26d0

10 construct personinf :: 0x3c2c68

11delete personinfo :: 0x3bdc20

12delete personinfo :: 0x3c0308

13delete personinfo :: 0x3bfe08

14delete personinfo :: 0x3c0a88

15delete personinfo :: 0x3c1248

16delete personinfo :: 0x3c1738

17delete personinfo :: 0x3c1bb8

18delete personinfo :: 0x3c2420

19delete personinfo :: 0x3c26d0

20delete personinfo :: 0x3c2c68

21 after qdeleteall size :: 10

尤其注意列印結果。

可以嘗試把2.清空容器行注釋掉,然後再執行程式,檢視執行結果。

總結qdeleteall只負責釋放容器元素記憶體,但沒有對容器的置空操作。若無意間二次再執行qdeleteall過程,程式必會崩潰。

為了避免可惡的崩潰,切記qdeleteall之後必須清空容器

good good study, day day up.

順序 選擇 迴圈 總結

Kali安裝之後必做20件事

kali安裝之後必做20件事 第二版 一,更換比較快的軟體源 修改sources.list檔案 su leafpad etc apt sources.list 然後選擇新增以下適合自己較快的源 可自由選擇,不一定要全部 飛機票 儲存之後執行 apt get update 重新整理系統 apt get...

mysql必知必 SQL必知必會學習筆記 一

資料庫基礎 資料庫 資料庫軟體 確切的說,資料庫軟體應稱為資料庫管理系統 dbms 資料庫是通過dbms建立和操作的容器 資料庫相當於檔案櫃 容器 表相當於檔案 同乙個資料庫不能存在相同的表名,不同的資料庫可以存在相同的表名 主鍵應滿足的條件 唯一性非空性 not null 主鍵列中的值不允許修改或...

崑山必捷必上雲之路

本文正在參加 最佳上雲實踐 評選,來給我們投票吧 編號32 作為目前國內公共文化領域排名前三的頂級整合商,公司致力於為各區域搭建數字服務平台 提供整體解決方案 研發特色產品,匯聚了來自各領域的行業的精英,並與中國聯通 清華紫光開展了廣泛合作,建立了一體化的創新服務模式。目前企業技術力量雄厚,研發團隊...