一个realloc问题?

chh2002 2003-11-09 04:08:36
char *string;
string=new char[17];
strcpy(string,"");
strcpy( string, "Hello world from " );
string=(char*)realloc(string,6);
strcat( string, "strcpy" );
为什么输出结果是hello d from strcpy
中间少了点?
...全文
51 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouqingyuan 2003-11-11
  • 打赏
  • 举报
回复
string=(char*)realloc(string,6);

改成string=(char*)realloc(string,(17+6)*sizeof(char));可能是楼主需要的
Andy84920 2003-11-11
  • 打赏
  • 举报
回复
我想这是你想要的:楼主:
这是我发的一遍帖子,得到很好的讨论,可以仔细看看:

http://expert.csdn.net/Expert/TopicView3.asp?id=2315448
Wolf0403 2003-11-10
  • 打赏
  • 举报
回复
因为 realloc 重新分配的比原来小,所以 VC 的 realloc 在需要的内存后面“打断”,用 cd 写入一些乱数据;但是因为没有 '\0' 在这些内存中,字符串还是原来的长度。
然后你用 strcat,是从原来字符串的 '\0' 开始追加的,所以整个字符串变得更长了,而且产生了越界
fierygnu 2003-11-10
  • 打赏
  • 举报
回复
楼主重新看看帮助就清楚了。
chh2002 2003-11-10
  • 打赏
  • 举报
回复
realloc不是追加吗?
我想要的是string 的长度是17+6个。
fierygnu 2003-11-09
  • 打赏
  • 举报
回复
realloc重新分配了内存。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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