释放内存时遇到奇怪的问题 。。。求解 ,大佬们

tjh12010 2019-12-08 10:44:29



*** Error in `./linux_time': free(): invalid pointer: 0xb7759ac0 ***


...全文
43 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2019-12-09
  • 打赏
  • 举报
回复
ret_t=asctime(stu_t)是把指针重新指向asctime的返回值的地址,已经不是你原来new出来的那个地址了
也就是
ret_t = (char *)malloc(sizeof(char)); //这是原来new出来的地址
ret_t=asctime(stu_t); //把指针指向另外一个地址
所以free(ret_t)的时候,指针不对,也就是asctime的返回值的地址不让你释放,因为这个返回值不是你自己new的
tjh12010 2019-12-09
  • 打赏
  • 举报
回复
也就是前面申请的地址废掉啦,对吧 ,换句话说,多此一举啦。 最近有强迫症,碰到指针就想malloc分配内存

69,382

社区成员

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

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