這兩個代碼示例編譯和運行沒有問題。 使用第二個變體會導致內存泄漏。任何想法爲什麼? 在此先感謝您的幫助。內存泄漏使用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