免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 老兵521
打印 上一主题 下一主题

[C] 字符数组会自动扩容么? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-07-02 22:31 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
12 [报告]
发表于 2009-07-03 01:18 |只看该作者
第一int index没分号,第二Age[3]有这个数组单元么

论坛徽章:
0
13 [报告]
发表于 2009-07-03 09:11 |只看该作者
原帖由 aaaaa5aa 于 2009-7-3 01:18 发表
第一int index没分号,第二Age[3]有这个数组单元么

Age[3]可能会覆盖index
所以就死循环了

论坛徽章:
0
14 [报告]
发表于 2009-07-03 11:42 |只看该作者
其实只是可能,栈这个跟编译器有很大关系的.....
非要弄成死循环的话,放到一个结构体内倒是必死无疑

论坛徽章:
0
15 [报告]
发表于 2009-07-03 11:46 |只看该作者
用C需要自己管理内存

论坛徽章:
0
16 [报告]
发表于 2009-07-03 14:09 |只看该作者
原帖由 老兵521 于 2009-7-2 18:26 发表
#include
#include
int main()
{
char a[4];
strcpy(a,"hello,world");
printf("%s\n",a);
printf("\n");
reuturn 0;
}
这个代码是可以运行的,而且会输出hello world,这是为什么呢?难道字符数组a会 ...



千万别想当然,搞c的 就改知道内存溢出是怎么回事。
千万别根据几次的运气来怀疑语言中的准则。。。。。

论坛徽章:
0
17 [报告]
发表于 2009-07-03 20:28 |只看该作者
原帖由 老兵521 于 2009-7-2 18:26 发表
#include
#include
int main()
{
char a[4];
strcpy(a,"hello,world");
printf("%s\n",a);
printf("\n");
reuturn 0;
}
这个代码是可以运行的,而且会输出hello world,这是为什么呢?难道字符数组a会 ...


vc6.0上运行,会打印结果,但是会出现非法地址访问。

论坛徽章:
0
18 [报告]
发表于 2009-07-03 21:52 |只看该作者
栈和编译器关系很大, GCC VC6.0栈是连续的, 但VS3005 VS2008之类在栈相邻数据中间夹入了一段缓冲区,调试时看内存就很直接了.

论坛徽章:
0
19 [报告]
发表于 2009-07-04 12:35 |只看该作者
谢谢大家了

论坛徽章:
0
20 [报告]
发表于 2009-07-04 12:36 |只看该作者

回复 #13 gawk 的帖子

哦,明白了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP