1. 程式人生 > >【轉】C++ queue記憶體釋放問題

【轉】C++ queue記憶體釋放問題

      最近在使用std::queue的時候,遇到一些奇怪的問題。我們使用std::queue來存放一些臨時的緩衝資料,然後有一個執行緒不斷地從queue裡取資料,寫入到檔案中,之後會呼叫pop()函式將資料彈出。但是很奇怪的地在彈出的過程中,程式的記憶體佔用絲毫沒有減少。查了一些資料後發現,貌似std::queue底層自己有一套記憶體管理機制,只有在程式退出或是queue被銷燬的時候才會釋放這一部分記憶體。
在VS2010中編譯並執行上面的程式碼時,發現隨著pop()的呼叫,記憶體佔用並沒有減少。解決方法有以下幾種:
l 使用list來替代queue,經測試是可行的,在pop的時候記憶體會減少。但是list的效率要遠不如queue了。
2 考慮使用別的編譯器,例如gcc,記憶體也會正常地減少。

3 自己寫一個Queue。

【轉自】http://blog.sina.com.cn/s/blog_3fe961ae0101gef9.html