在MFC中为什么我new了对象,但用delete却总是报错呢?
来源:百度知道 编辑:UC知道 时间:2024/09/25 17:12:12
new 了之后 要delete总是报错
TiXmlDocument Grammar;
TiXmlElement *define = new TiXmlElement("DEFINE");
root->LinkEndChild(define);
TiXmlElement *ids = new TiXmlElement("ID");
ids->SetAttribute("NAME",SCmd);
ids->SetAttribute("VAL",char_Val);
define->LinkEndChild(ids);
TiXmlElement *rule = new TiXmlElement("RULE");
rule->SetAttribute("NAME",LCmd);
rule->SetAttribute("ID",SCmd);
rule->SetAttribute("TOPLEVEL","ACTIVE");
root->LinkEndChild(rule);
TiXmlElement *L = new TiXmlElement("L");
rule->LinkEndChild(L);
TiXmlElement *P = new TiXmlElement("P");
P->LinkEndChild(new TiXmlText(ChiCmd));
L->LinkEndChild(P);
Grammar.SaveFile("res\\CmdGrammar.xml");
Grammar.Clear();
/*delete decl;
TiXmlDocument Grammar;
TiXmlElement *define = new TiXmlElement("DEFINE");
root->LinkEndChild(define);
TiXmlElement *ids = new TiXmlElement("ID");
ids->SetAttribute("NAME",SCmd);
ids->SetAttribute("VAL",char_Val);
define->LinkEndChild(ids);
TiXmlElement *rule = new TiXmlElement("RULE");
rule->SetAttribute("NAME",LCmd);
rule->SetAttribute("ID",SCmd);
rule->SetAttribute("TOPLEVEL","ACTIVE");
root->LinkEndChild(rule);
TiXmlElement *L = new TiXmlElement("L");
rule->LinkEndChild(L);
TiXmlElement *P = new TiXmlElement("P");
P->LinkEndChild(new TiXmlText(ChiCmd));
L->LinkEndChild(P);
Grammar.SaveFile("res\\CmdGrammar.xml");
Grammar.Clear();
/*delete decl;
江半仙 请不要误导了,delete一个空指针根本没有关系,有关系的是delete完这个指针没有设置为空,那样就变成一个野指针了。
我看你给出的程序并不完整,不过我觉得tinyxml应该提供了对应的内存管理,只要删除根或者根本不用delete会自动帮你delete,这点你最好看下tinyxml的帮助。
至于会崩溃的问题建议你还是debug下应该是野指针的问题。
那就可能是你的new运算符操作失败了。
对于空指针当然不能delete
一般都是调用delete之前先对指针进行有效性检验:ASSERT(p)/ASSERT_VALID(p)之类的。
然后在delete.防止同一对象被delete多次或者对空对象delete
希望对你有所帮助!
是delete 到第几个出错的.
检查指针是否为空.
把具体错误贴出来
在MFC中,我创建了hahaDlg
用new在堆中构造类对象,如果delete后紧跟个},是不是就可以省略delete了?
MFC中,为什么创建类对象以后,有时要调用Creat()函数,有时却不用 呢?
为什么我的vc 2005中 没有mfc template 怎么办??高手指点 怎么使用MFC
在javascript中""和new创建String对象的区别
在栈上new 一个对象
中行笔试题:String s=new String("xyz")创建了几个String对象
MFC中CTime对象不能相等的问题
String s = new String("abc");为什么创建了两个字符串对象?
mfc的对象