realloc函数

jinjingwen 2011-03-30 04:21:46

void strcat1(char *s,const char *t)
{
while(*s)
s++;
while(*t)
*s++=*t++;
}
void main()
{
char *s="123";
const char *t="456";
realloc(s,strlen(s)+strlen(t)+1);
strcat1(s,t);

printf("%s",s);
printf("\n");
}

请问各位高手,这个程序内存为什么会出问题?
...全文
65 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinjingwen 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lazy_2010 的回复:]
realloc 的用法完全不对,就算 s 是 malloc/calloc 分配的指针,返回值可能不是 s 了。
[/Quote]
哦 ,是应该 ##=realloc();的吧
jinjingwen 2011-03-30
  • 打赏
  • 举报
回复
to pengzhixi
要的就是这句话,谢谢。我就是搞不清楚realloc函数的第一个参数得是什么
lazy_2010 2011-03-30
  • 打赏
  • 举报
回复
realloc 的用法完全不对,就算 s 是 malloc/calloc 分配的指针,返回值可能不是 s 了。
pengzhixi 2011-03-30
  • 打赏
  • 举报
回复
你s指向的是常量区,realloc要求第一个参数为NULL或者是malloc,calloc,realloc分配的内存指针。

69,371

社区成员

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

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