这两个代码示例编译和运行没有问题。 使用第二个变体会导致内存泄漏。任何想法为什么? 在此先感谢您的帮助。内存泄漏使用shared_ptr
变体1:
typedef boost::shared_ptr<ParameterTabelle> SpParameterTabelle;
struct ParTabSpalteData
{
ParTabSpalteData(const SpParameterTabelle& tabelle, const string& id)
:Tabelle(tabelle), Id(id)
{
}
const SpParameterTabelle& Tabelle;
string Id;
};
变2:
struct ParTabSpalteData
{
ParTabSpalteData(const SpParameterTabelle& tabelle, const string& id)
:Id(id)
{
// causes memory leak
Tabelle2 = tabelle;
}
SpParameterTabelle Tabelle2;
string Id;
};
你是怎么确定有泄漏的? – 2010-04-29 09:10:32
@Hassan:我的IDE(Visual Studio 2008)有一个内存泄漏检测,显示程序退出后控制台中泄漏的内存区域的地址。如果我使用变体,则泄漏控制台输出消失。 – nabulke 2010-04-29 09:19:17