我在應用程序中有泄漏,我已經將我的代碼減少到下面,並且每次迭代泄漏大約12kb。我看不到這是否是我的代碼問題或者xerces庫自身的問題。但看看Perfmon中的私人字節,我只能看到增長和收縮,所以顯然是漏了。內存泄漏xerces使用
有人可以請指教什麼可能是錯用下面的代碼,導致它在這樣一個令人難以置信的速度?:
(單線程測試程序)
for (int x = 0; x < 1000000; x++){
DataSerializer* ds = new DataSerializer();
ds->test(request);
ds->releasedocument();
ds->destroy_xml_lib();
delete ds;
}
void DataSerializer::test(std::string& request)
{
impl = initialize_impl();
}
DOMImplementation* DataSerializer::initialize_impl()
{
try
{
boost::mutex::scoped_lock init_lock(impl_mtx);
XMLPlatformUtils::Initialize();
return DOMImplementationRegistry::getDOMImplementation(XConv("Core"));
}
catch(const XMLException& toCatch)
{
char *pMsg = XMLString::transcode(toCatch.getMessage());
std::string msg(pMsg);
XMLString::release(&pMsg);
}
return NULL;
}
void DataSerializer::destroy_xml_lib()
{
boost::mutex::scoped_lock terminate_lock (impl_mtx); //is being used in MT app
XMLPlatformUtils::Terminate();
}
void DataSerializer::releasedocument()
{
if (document){
document->release();
document = NULL;
}
}
我不明白泄漏這怎麼可能泄漏?我錯過了什麼?
也許你可以展示更多的源代碼?例如,DataSerializer構造函數是怎樣的? – 2013-03-20 17:29:06