【发布时间】:2009-10-08 01:53:02
【问题描述】:
我有一个内存泄漏,我猜它是由错误使用 scoped_lock (Boost) 引起的。但是我没能找到确切的问题,而且我相信代码的编写方式也不完全正确。
代码在这个类中: http://taf.codeplex.com/SourceControl/changeset/view/31767#511225
主要的重要方法是ThreadedLoop()。基本上,此方法在线程中启动,并定期检查要为雅虎下载的市场数据。对于每只股票(或其他),将创建一个新线程(用于 ExecuteNextRequest() 方法),将指向包含股票名称的字符串的指针作为参数传递。这是我唯一做的内存分配,但它在线程执行结束时被释放。
我也会对如何增强此代码感兴趣(当然我可以使用线程池,但这还不是重点)。非常感谢!
【问题讨论】:
-
滥用锁定原语更有可能导致死锁,而不是内存泄漏
-
您可以只使用简单的
std::string而不是指向它的指针。我认为指针没有任何用途,但我也不认为这是您的内存泄漏的原因...... -
@sth:我同意你的评论。但是,如果您可能希望使用可变字符串,并且所有看到它的引用都可以看到更改,那么
shared_ptr仍然有用。 :-)
标签: c++ boost boost-thread scoped-lock