C++ CString指针的使用问题(急)

denanjin 2009-03-23 11:26:11
Cstring rowName="Test";
CString *phRowName=NULL;
phRowName=&rowName;
delete phRowName;
这段代码我在最后一句释放指针的时候出了问题,请各位高手帮我看一下是什么地方写错了。
...全文
467 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
btloveet 2011-09-06
  • 打赏
  • 举报
回复
一个比一个犀利!
kivincheng 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 tianma2005123 的回复:]
引用 11 楼 whoissl000 的回复:
没领证是不能离婚的


没领证是不“用”离婚的
[/Quote]

genius_tong 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 whoissl000 的回复:]
没领证是不能离婚的
[/Quote]

好恰切~
cyldf 2009-03-23
  • 打赏
  • 举报
回复
没有new,肯定是不能delete的
liusichen_0 2009-03-23
  • 打赏
  • 举报
回复
不能释放一个“常量”啊!!
whoissl000 2009-03-23
  • 打赏
  • 举报
回复
没领证是不能离婚的
solaker 2009-03-23
  • 打赏
  • 举报
回复
没分配空间啊(没new)
lgccaa 2009-03-23
  • 打赏
  • 举报
回复
记住,delete和new是成对出现的,没有new,哪来的delete,当然有可能有的new被封装了,但一般来说new被封装了,delete也会被封装的,要不然那设计就有点不合格了
  • 打赏
  • 举报
回复
没有new。何来delete??
zhoulehua 2009-03-23
  • 打赏
  • 举报
回复
前面的人都这么说了,不多说了,顶。
denanjin 2009-03-23
  • 打赏
  • 举报
回复
XMLRowType 是一个自定义类
CMap<CString*,CString*,CMap<CString*,CString*,XMLRowType*,XMLRowType*>*,CMap<CString*,CString*,XMLRowType*,XMLRowType*>*> tableMap;
那这段话是不是有问题哦,我把这个方法执行完了以后执行CString的析构函数时出错(前两次正确,第三次出错;错误的方法是: FreeData(GetData());)
XMLRowType* xmlRow=new XMLRowType();
xmlRow->rowName=rowName;
xmlRow->rowValue=rowValue;
xmlRow->parentNode=parentNode;
CMap<CString*,CString*,XMLRowType*,XMLRowType*>* rowMap=new CMap<CString*,CString*,XMLRowType*,XMLRowType*>();

rowMap->SetAt(&rowName,xmlRow);
tableMap.SetAt(&rowName,rowMap);
POSITION posRow=rowMap->GetStartPosition();
while(posRow!=NULL)
{
CString *rowKey=NULL;
XMLRowType * rowType =NULL;
rowMap->GetNextAssoc(posRow,rowKey,rowType);
if (rowType!=NULL)
{
delete rowType;
rowType=NULL;
}
}
xuruichen 2009-03-23
  • 打赏
  • 举报
回复
delete是用来将自己申请new的内存空间释放回操作系统的

CString *phRowName=NULL;

你没有申请空间,怎么DELETE
lzy340623339 2009-03-23
  • 打赏
  • 举报
回复
phRowName没有分配空间,delete只能用于指向常规new分配的堆
freeskyo 2009-03-23
  • 打赏
  • 举报
回复
Cstring rowName="Test"; //CString S不大写吗
CString *phRowName=NULL;
phRowName=&rowName;
delete phRowName;
downmooner 2009-03-23
  • 打赏
  • 举报
回复
delete是用来将自己申请new的内存空间释放回操作系统的

你这没有申请空间.
mengde007 2009-03-23
  • 打赏
  • 举报
回复
phRowName本来就没有分配空间,他只不过指向一个常量而已。常量怎么能delete
tianma2005123 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 whoissl000 的回复:]
没领证是不能离婚的
[/Quote]

没领证是不“用”离婚的
denanjin 2009-03-23
  • 打赏
  • 举报
回复
问题已解决.谢谢大家的帮助,本人是个菜鸟,希望以后大家也能经常帮助我。现在结贴了
flameearth 2009-03-23
  • 打赏
  • 举报
回复
phRowName 不是new出来的你delete干毛阿~~
他只是指向了一个Cstring的变量,而Cstring rowName="Test"; 又不是 new的,

嚎!~~~

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧