У меня есть утечка в моем приложении, и я пришел, чтобы сократить мой код до следующего, и он пропускает около 12 КБ за итерацию.Я не вижу, является ли это проблемой с моим кодом или самой библиотекой xerces.Но, глядя на «Частные байты» в Perfmon, я вижу только рост и отсутствие сжатия, поэтому он явно протекает.
Может кто-нибудь посоветовать, что может быть не так в следующем коде, который приводит к его утечке с такой невероятной скоростью?:
(однопоточное тестовое приложение)
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;
}
}
Я не понимаю, как это может привести к утечке?Что я пропустил?