2014-11-09 53 views
-1

我正在使用C++優先級隊列,每次迭代發生時我都必須清除優先級隊列。由於已經有一個優先級隊列定義沒有明確的功能我想這樣優先隊列中可能的內存泄漏?

priority_queue <int> fpq; 
while(condition) 
{ 
    //Resetting fpq for each iteration 
    fpq=priority_queue<int>();  //Possible memory leak 
//modified fpq 
} 

凡FPQ是現有對象,我在它使用其構造一個新的優先級隊列(裏面是空的),把一個方法。我的問題是,它會導致內存泄漏,因爲在此代碼行之前分配給fpq的內存未明確釋放。還是被照顧?

+0

您可以讓RAII在超出範圍時自動調用'fpq'析構函數來處理它嗎?如果您擔心內存泄漏,請嘗試通過valgrind運行代碼。 – shuttle87 2014-11-09 08:26:11

+0

標準庫容器和容器適配器管理自己的存儲空間。發佈的代碼中沒有泄漏。 – Blastfurnace 2014-11-09 08:29:10

回答

0

priority_queue析構函數和/或拷貝構造函數負責在複製新的(空的)priority_queue之前釋放未使用的內存,所以在你寫的代碼中沒有泄漏。

對於所有標準容器對象都是如此,所以您可以安全地使用它們而不用擔心內存泄漏。