看看下段程序会有啥样的错误,并解释原因

yu3350360 2011-08-18 11:10:19

int main()
{
char a;
//char *p=(char*)malloc(sizeof(char)*100);
char *p=&a;
strcpy(p,"h");
cout<<p<<endl;
return 0;
}
...全文
90 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
youkuxiaobin 2011-08-19
  • 打赏
  • 举报
回复
vc6.0没问题啊
yu3350360 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yu3350360 的回复:]
引用 4 楼 youkuxiaobin 的回复:
vc6.0不溢出,正常输出
g++溢出

我用的是VS2005
[/Quote]
vc6.0也会溢出报错的
至善者善之敌 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 agoago_2009 的回复:]
引用 2 楼 yu3350360 的回复:

引用 1 楼 agoago_2009 的回复:
你运行一下就知道了三,溢出了

恩,是溢出了
能更深层的说明一下嘛?
char 分配一字节,但是"h"是 'h'和'\0',是两个字节
[/Quote]

可以结贴了
Gloveing 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yu3350360 的回复:]
引用 1 楼 agoago_2009 的回复:
你运行一下就知道了三,溢出了

恩,是溢出了
能更深层的说明一下嘛?
[/Quote] char 分配一字节,但是"h"是 'h'和'\0',是两个字节
yu3350360 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 agoago_2009 的回复:]
引用 2 楼 yu3350360 的回复:

引用 1 楼 agoago_2009 的回复:
你运行一下就知道了三,溢出了

恩,是溢出了
能更深层的说明一下嘛?
char 分配一字节,但是"h"是 'h'和'\0',是两个字节
[/Quote]
恩,可以结贴了,是内存溢出了。顺便说一下VC6.0也会有问题的
yu3350360 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 youkuxiaobin 的回复:]
vc6.0不溢出,正常输出
g++溢出
[/Quote]
我用的是VS2005
yu3350360 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 youkuxiaobin 的回复:]
一般a会分配4个字节(字节对齐),所以可以拷贝,两个字符(h和\0)到a中
输出的时候就直接输出
[/Quote]
会报出这样的错误Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.
还不是特别理解
Jxiaoshen 2011-08-18
  • 打赏
  • 举报
回复
"h" 是2字符
char a是字符 不是字符串, 是1字符
youkuxiaobin 2011-08-18
  • 打赏
  • 举报
回复
vc6.0不溢出,正常输出
g++溢出
youkuxiaobin 2011-08-18
  • 打赏
  • 举报
回复
一般a会分配4个字节(字节对齐),所以可以拷贝,两个字符(h和\0)到a中
输出的时候就直接输出
yu3350360 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 agoago_2009 的回复:]
你运行一下就知道了三,溢出了
[/Quote]
恩,是溢出了
能更深层的说明一下嘛?
Gloveing 2011-08-18
  • 打赏
  • 举报
回复
你运行一下就知道了三,溢出了

64,648

社区成员

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

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