数组的长度??

chenpeng20000 2003-08-26 06:27:37
下段程序
char dsname[]="heihei";
cout<<sizeof(dsname)<<"\n";
AnsiString str="hehe";
StrCat(dsname,str.c_str());
cout<<sizeof(dsname)<<"\n";
为何都输出7呢?第二个为啥不是11?
...全文
19 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenpeng20000 2003-08-27
  • 打赏
  • 举报
回复
致谢
teatool 2003-08-27
  • 打赏
  • 举报
回复
不会自动变长的,C/C++中没有自动变长数组
yhz 2003-08-27
  • 打赏
  • 举报
回复
再说一句:你这种做法已经出现了内存泄漏。

因为你只给dsname分配了7个字节的长度,而你却要在值后再加6个字符。
这种溢出,完全可能覆盖掉后面有用的数据,导致运行不正常。

提醒一句:strcat不会为数组重新分配内存。
如果要扩大内存,必须用realloc去重新分配内存大小。
yhz 2003-08-27
  • 打赏
  • 举报
回复
strcat()执行后,dsname[]长度不变吗?

sizeof()的值是不变的。变的是strlen的值。
chenpeng20000 2003-08-27
  • 打赏
  • 举报
回复
自己顶!!
chenpeng20000 2003-08-26
  • 打赏
  • 举报
回复
to zhaoloudy(学到那年才到头?) :strcat()执行后,dsname[]长度不变吗?
zhaoloudy 2003-08-26
  • 打赏
  • 举报
回复
你一开始定义的就是7个嘛!

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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