Qt QVector對儲存資料的釋放

2021-08-15 03:41:17 字數 1146 閱讀 8920

本文介紹使用qt的qvector對儲存資料的釋放,包括儲存自動變數指標變數兩個方面。

qvector中的內建有記憶體管理,當 qvector生命週期結束,它的析構函式會把qvector中的元素銷毀,並釋放它們所占用的空間,所以用qvector一般不用顯式釋放 。但是當qvector儲存資料相當大時候,並且對資料進行了一些操作,比如刪除後,如果我們能積極主動的去釋放記憶體,那麼是非常明智高效。

我們的操作方法是:

m_vecitems.clear();

qvector().swap(m_vecitems);

這裡使用空的自定義型別的qvector來交換原向量,從而達到對qvector容量的清零。

當然如果用c++11的std::vector那麼也可以這樣釋放:

m_vecitems.clear();

m_vecitems.shrink_to_fit();

如果你qvector 中存放的是指標,那麼當 qvector 銷毀時,那些指標指向的物件不會被銷毀,那些記憶體不會被釋放,這時需要自己來釋放這些動態分配的記憶體,方法是:

for(auto it = m_vecitems.begin(); it != m_vecitems.end(); ++it)

}m_vecitems.clear();

qvector().swap(m_vecitems);

2018-10-29補充:

qt之中,在qtalgorithms裡面有個函式,qdeleteall,其本身有兩個過載:

1)void qdeleteall(forwarditerator begin, forwarditerator end)

用法如下:

qlistlist;

qdeleteall(list.begin(), list.end());

list.clear();

2)void qdeleteall(const container &c)

也就是可以直接清空乙個容器,比如qlist、qvector等。

用這些qt自帶的函式,在本身框架裡更簡單。但是最上面的用法其實是c++的用法,在**都可以這麼用。

有何不足,也歡迎批評指教!記錄只為更好的總結與分享!

MyCat 對儲存過程

從 mycat1.6 版本開始完整支援 mysql 和 oracle 的儲存過程,呼叫原理需要使用註解,把儲存過程的呼叫當做普通 sql 來呼叫 注 在程式中別用以前儲存過程的呼叫方式,要按照普通查詢 sql 的呼叫方式,返回結果從 resultset 裡取 完美支援以下三種情況 1 無返回值 my...

鍵值對儲存 撤銷儲存密碼

道理很簡單 當確定儲存的時候,sp名字設定為 remember 帳號,對應的值設定為密碼 取消儲存的時候設定為空就好 if rememberpassword else 那如何在輸入的時候判斷?textwatcher ps.edittext也可以設定,twpassword 是textwatcher物件...

授予對儲存過程的許可權

授予對儲存過程的許可權 1.在物件資源管理器中,連線到某個 資料庫引擎 例項,再展開該例項。2.依次展開 資料庫 儲存過程所屬的資料庫以及 可程式設計性 3.展開 儲存過程 右鍵單擊要針對其授予許可權的過程,再單擊 屬性 4.在 儲存過程屬性 中,選擇 許可權 頁。5.若要為使用者 資料庫角色或應用...