我有内存泄漏,我想这是由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