关于Stack around the variable 'msg_id' was corrupted.

yinhelangke 2010-12-20 11:01:03
最近写了一个程序,出现了很多问题,其中有问题的一段代码单独拿出来测试,老是出现如下提示:
Run-Time Check Failure #2 - Stack around the variable 'msg_id' was corrupted.

具体代码如下:
int main()
{
char msg_buf[1024];
time_t ctime = time(NULL);
char username[] = "yang";
char hostname[56];
strcpy(hostname,username);
int choice = 32;
char *msg = "hello";
memset(msg_buf,0,sizeof(msg_buf));
char msg_id[5] = "",mode[4];
sprintf(msg_id,"%d",ctime);
sprintf(mode,"%d",choice);
sprintf(msg_buf,"1:%s:%s:%s:%s:%s",msg_id,username,hostname,mode,msg);
cout<<msg_buf<<endl;
return 0;
}
主要目的是想要打印出格式化的字符串,但是总是出现上面说的问题
...全文
92 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
sprintf(msg_id,"%d",ctime);
===========================
这里的ctime是一个很大的数,转换成字符串后,会超过msg_id的5个长度!

你应该将msg_id长度设置得适当长一些! 20或者32!

程序报错是运行时错误,报错是msg_id内存越界,崩溃了!!
ouyh12345 2010-12-20
  • 打赏
  • 举报
回复
应该是越界了
bluejays 2010-12-20
  • 打赏
  • 举报
回复
char msg_id[5] = "",
5太小了,装不下,越界了。你把msg_id的内容输出一看就知道了
改成20吧。
yinhelangke 2010-12-20
  • 打赏
  • 举报
回复
问题解决了 谢谢各位了

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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