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

时间:2011-12-12 15:06:13

标签: c++ visual-studio visual-studio-2010 xerces

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

以下是源代码:

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

return target;
}

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

1 个答案:

答案 0 :(得分:5)

来自xerces docs

  

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

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