내 응용 프로그램에서 누수가 있고 나는 다음 코드를 줄이기 위해왔다 반복마다 약 12kb 유출. 이것이 내 코드에 문제가 있거나 xerces 라이브러리 자체에 문제가 있는지 나는 알 수 없다. 그러나 Perfmon의 Private Bytes를 보면 성장과 수축이 보이기 때문에 분명히 새어 나옵니다.메모리 누수 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 생성자는 어떻게 생겼을까요? –