求解释,关于malloc 与realloc的使用

炼气士 2011-08-10 10:48:33
为什么这样写回提示有有错,错误为_CrtIsValidHeapPointer,能解释一下这是什么错误,为什么不能这样做

char *src;

src = (char *)malloc(2);
src++;
src = (char *)realloc(src,3);
...全文
99 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingzhiyaoni321 2011-08-11
  • 打赏
  • 举报
回复
上面的诠释的很清晰,
pengzhixi 2011-08-11
  • 打赏
  • 举报
回复
因为在调用realloc的时候会先free之前的内存,而你却将之前malloc获得指针指向位置改变,自然free的时候就会出错
jackyjkchen 2011-08-11
  • 打赏
  • 举报
回复
malloc之后的指针是不可修改的,否则realloc和free都会报错
AnYidan 2011-08-11
  • 打赏
  • 举报
回复
因为你修改了指针

而通过原指针可以找到你当初分配内存的所有必要信息
The c programming language 有讲
乔巴好萌 2011-08-10
  • 打赏
  • 举报
回复
sp

[Quote=引用 1 楼 thefirstz 的回复:]
简单来说,申请内存的时候一般都在申请的内存前面有一个数据结构表明该次申请到的内存大小,便于以后用free释放
realloc里面需要free掉原先申请的内存,src++以后操作系统就不能从src之前的内存块知道应该free掉多大的内存,所以出错
[/Quote]
昵称很不好取 2011-08-10
  • 打赏
  • 举报
回复
简单来说,申请内存的时候一般都在申请的内存前面有一个数据结构表明该次申请到的内存大小,便于以后用free释放
realloc里面需要free掉原先申请的内存,src++以后操作系统就不能从src之前的内存块知道应该free掉多大的内存,所以出错

69,372

社区成员

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

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