当我尝试使用xerces"visual studio 2010"释放内存时,我的项目崩溃

nid*_*hal 2 c++ xerces visual-studio-2010 visual-studio

我在一个项目中工作,我使用xerces库.当我尝试删除指针时,我的项目崩溃了.

这是源代码:

std::ostream& operator<<(std::ostream& target, const DOMString& s)
{
char *p = s.transcode(); // method from xerces
target << p;
delete [] p;

return target;
}
Run Code Online (Sandbox Code Playgroud)

此方法在Visual Studio 6中正常工作(我正在尝试在2010年构建).

Eva*_*ran 5

来自xerces文档:

注意:返回的缓冲区是动态分配的,调用者有责任在不再需要时删除它.您可以调用XMLString :: release来释放此返回的缓冲区.

似乎xerces 使用new[](可能malloc或某些自定义分配器)分配缓冲区.保证缓冲区安全释放的唯一方法是:XMLString::release