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

2024-12-03 21:58:58
推荐回答(6个)
回答1:

Windows系统默认用户栈大小为4M(约4000000)。
现在用了10000000字节当然会溢出。
为什么编译器没报警告呢?原因:编译器编译时并不做检查。
可以尝试将堆栈设置更大(具体怎么设置请百度)
要么将其放到函数外,也就是作为全局(静态)变量存在,那就不受限了(不过最多也就是4G),故编译可以通过。

回答2:

#include
#include
char a[10000000] = {0};//放外面试试
void main()
{

}

回答3:

有限制的,在16位和32位程序中的限制不一样。
一般为2的16次方,或32次方.

回答4:

什么 编译器?
简单的 C 编译器 只支持 64k 也就是 实际 最大 是 64327

回答5:

用的是什么编译器,是在电脑上吗,你定义数据过多了

回答6:

如果需要建立那么大的数组的话,可以使用malloc或new来动态分配内存。一般情况下这么大的数组不允许直接设立。