我正在项目中工作,我使用的是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年构建)。
答案 0 :(得分:5)
来自xerces docs:
注意:返回的缓冲区是动态分配的,并且是 调用者有责任在不再需要时删除它。您 可以调用XMLString :: release来释放这个返回的缓冲区。
似乎xerces使用new[]
(可能是malloc
或某些自定义分配器)分配缓冲区而不是。保证缓冲区安全释放的唯一方法是:XMLString::release