指向指针的指针的内存析放问题?

guoxiny 2003-02-26 04:28:52
GetMemory(char** p)
{
*p = malloc(10);
}

char** p;
p = (char**)new char;
GetMemory(p);
free(*p);
delete p;//error这里会出现错误
请问这样分配的内存如何析放呢?
...全文
40 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang0jun 2003-02-26
  • 打赏
  • 举报
回复
chinajiji is right!!
qhgary 2003-02-26
  • 打赏
  • 举报
回复
你这样不对吧p = (char**)new char;,把一个本来是char*地址强行转化为char**,
后面又试图delete p? 本来就不能这样来。如果你非要如此。就没有必要delete p,free(*p)就已经释放完了。后面写上p=null就可以了
jinyongzhi 2003-02-26
  • 打赏
  • 举报
回复
把*p = malloc(10);改为 *p = (char*)malloc(10);
p = (char**)new char;改为 p = new char*;
就OK了,
Cybergate 2003-02-26
  • 打赏
  • 举报
回复
p = (char**)new char;
改为
p = new char*
chinajiji 2003-02-26
  • 打赏
  • 举报
回复
delete *p;
改为:
delete []*p;
chinajiji 2003-02-26
  • 打赏
  • 举报
回复
GetMemory(char** p)
{
*p = new char[10];
}

char** p;
p = new char*;
GetMemory(p);
delete *p;
delete p;
jinyongzhi 2003-02-26
  • 打赏
  • 举报
回复
sorry,我说的有问题,再看看:(
jinyongzhi 2003-02-26
  • 打赏
  • 举报
回复
p = (char**)new char;//此处错误,应为p = new char*;在你的程序里,其实完全不需要这步,直接p=NULL;
delete p;//如果上面new了,此处就应该delete,否则内存就泄漏了
GetMemory(p);
chinajiji 2003-02-26
  • 打赏
  • 举报
回复
GetMemory(char** p)
{
*p = (char*)malloc(10);
}

char** p;
//p = (char**)new char;
GetMemory(p);
free(*p);
//delete p;//

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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