我有內存泄漏,我想這是由scoped_lock(Boost)的錯誤用法引起的。然而,我無法找到確切的問題,我相信代碼編寫的方式也不完全正確。由於scoped_lock的使用錯誤導致內存泄漏?
該代碼是在這個類有: http://taf.codeplex.com/SourceControl/changeset/view/31767#511225
主要重要的方法是ThreadedLoop()。基本上,這個方法是在一個線程內開始的,並定期檢查雅虎下載的市場數據。對於每個股票(或其他),將創建一個新的線程(用於ExecuteNextRequest()方法),將包含股票名稱的字符串作爲參數傳遞給指針。這是我唯一的內存分配,但它在線程執行結束時釋放。我也會對如何增強這段代碼感興趣(當然,我可以使用一個線程池,但這還不是重點)。非常感謝!
誤用鎖定原語將更有可能導致死鎖,而不是內存泄漏 – 2009-10-08 02:05:11
您可以使用簡單的'std :: string'而不是指向它的指針。我不認爲指針有任何目的,但我也不認爲這是你的內存泄漏的原因... – sth 2009-10-08 02:14:28
@sth:我同意你的評論。但是,在可能想要使用該字符串變爲可變的情況下,如果所有引用都可見,則'shared_ptr'仍然有用。 :-) – 2009-10-08 03:12:28