C语言 字符数组 初始化问题 char a[10000000] = {0};

定义了如下字符数组并对其初始化,编译器提示没有错误,但是一编译就出现错误,调试了下说是溢出了,去一个0就可以了,到底怎么溢出了??求教~~~chara[10000000]... 定义了如下字符数组并对其初始化,编译器提示没有错误,但是一编译就出现错误,调试了下说是溢出了,去一个0就可以了,到底怎么溢出了??求教~~~
char a[10000000] = {0};
展开
 我来答
我是百人敌
2012-02-18 · TA获得超过358个赞
知道小有建树答主
回答量:310
采纳率:0%
帮助的人:267万
展开全部
Windows系统默认用户栈大小为4M(约4000000)。
现在用了10000000字节当然会溢出。
为什么编译器没报警告呢?原因:编译器编译时并不做检查。
可以尝试将堆栈设置更大(具体怎么设置渣型请百度)
要么将其放到函数外,悉氏也就是作为全局(静态)变量存在,那就不受限了(不过最多睁梁散也就是4G),故编译可以通过。
百度网友28b4182
2012-02-18 · TA获得超过7222个赞
知道大有可为答主
回答量:4847
采纳率:100%
帮助的人:1810万
展开全部
#include<stdio.h>
#include<stdlib.h>
char a[10000000] = {0};//放外链嫌面试凳唤罩枣闹试
void main()
{

}
追问
的确可以,但是这是为什么呢?
追答
因为在函数里面的话优先级比较低,数组不能开太大的.在函数数外面就可以了,不过也不能无限大的,如果超出了你自己计算机的内存也是不行的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b387265
2012-02-18
知道答主
回答量:73
采纳率:0%
帮助的人:30.2万
展开全部
有限制的,在16位和32位程序中的限制不一样。
一般为2的16次方,或32次方.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7f4f28558
2012-02-18 · TA获得超过272个赞
知道小有建树答主
回答量:489
采纳率:0%
帮助的人:235万
展开全部
什么 编译器?
简单的 C 编译器 只支持 64k 也就是 实际 最大 是 64327
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
784747951
2012-02-18 · 超过24用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:62.4万
展开全部
用的是什么编译器,是在电脑上吗,你定义数据过多了
追问
用的是Visual Stdio 2010,就定义了这一个数组,别的没啥。
追答
是用在单片机上吗,如果是,你选择的单片机型号没有这么多内部ram的,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2018-01-15
知道答主
回答量:9
采纳率:0%
帮助的人:2.7万
展开全部
如果需要建立那么大的数组的话,可以使用malloc或new来动态分配粗喊春内存。渗余一般情岩耐况下这么大的数组不允许直接设立。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式