首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除TXMLDocument对象Embarcadero

删除TXMLDocument对象Embarcadero
EN

Stack Overflow用户
提问于 2013-05-20 16:58:07
回答 2查看 648关注 0票数 0

我有一个对象要删除:

代码语言:javascript
复制
XMLDoc = new TXMLDocument(NULL);  

但我不知道该怎么做。它不起作用:

代码语言:javascript
复制
delete XMLDoc;
XMLDoc->free();

当我尝试删除对象时,程序崩溃了。

所以这是我的代码的一部分。我有一门课:

代码语言:javascript
复制
class C_XMLhandler{
    private:
        TXMLDocument *XMLDoc;
...
...
    public:
        void loadXMLfile(String name);
...
...
};

and example declaration of method:
bool C_XMLhandler::loadXMLfile(String name)
{
        XMLDoc = new TXMLDocument(NULL);
        Box=GetMagicBox(XMLDoc); //it's XML parser method, and it's doesen't matter
        delete XMLDoc; //when i reach this line the program scrashes
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-21 11:58:46

http://docwiki.embarcadero.com/Libraries/XE6/en/Xml.XMLDoc.TXMLDocument.Destroy

对象被它所连接的组件删除了,否则不能确定,我在某处读到它是自动删除的。(嗯)

票数 1
EN

Stack Overflow用户

发布于 2013-05-20 17:00:45

这是因为您在调用now delete对象中的free方法之前删除了该对象。

当您执行delete XMLDoc时,分配给XMLDoc的内存被标记为可用,并执行对象析构函数。现在,当在调用XMLDoc->free()时使用指针时,您正在访问不再分配的内存,并且您会遇到未定义的行为,这有时会导致崩溃。

您应该首先检查free方法是否在对象析构函数内未被调用,如果没有,则反过来检查。如果在析构函数中调用free,则根本不需要调用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16645896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档