大数组定义在main函数中不能执行,为什么将其定义为全局变量就可以执行?
2013-05-24 10:11
489 查看
数组定义在函数中时,占用的内存来自栈空间,栈空间是在进程创建时初始化的,有固定的大小,一般为几十KB,所以太大的数组会耗光栈空间。
而全局变量占用的堆空间,堆空间中的内存是按需分配,自由增长的,可以非常大,32位的系统中可以大到4GB。
而全局变量占用的堆空间,堆空间中的内存是按需分配,自由增长的,可以非常大,32位的系统中可以大到4GB。
相关文章推荐
- 为什么.h文件中不能定义全局变量
- 定义数组时为什么不能用含有变量的表达式
- [C语言]除非该数组为全局变量,否则只能在定义数组时获取数组长度,在传递过程中只是传递指针不能再次获取长度
- 为什么定义一个过大的数组或容器,应当把它把它定义为全局变量为宜?
- boj problem 1331 思路:快排分块 按块查找 问题:全局数组时可以定义到500W的 main函数下的数组不行~ 另外c语言比c++快 TLE可以考虑C~~具体原因待解决
- 这个程序中为什么出错???为什么不能把nl,nr定义为全局变量,求大神指教
- 你不知道的c语言之为什么数组的大小不能是变量
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?
- 为什么???字符串字面量初始化给数组时可以更改,而初始化给指针不能更改?
- c++函数内部可以返回函数内部定义的指针 但是不能返回函数内部定义的数组
- 为什么用const说明的常量不能用来定义一个数组的初始大小?
- php预定义的全局数组变量
- 转载_keril中不能定义全局变量时初始化的原因
- PHP数组之预定义超全局数组变量
- 设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间。注意: 可以使用额外的一个或两个变量,但不允许额外再开一个数组拷贝。
- Unix下可以用变量定义数组大小?
- php超全局数组(预定义变量)
- C指针以及为什么不能返回局部指针变量,却可以返回局部变量
- 用transient修饰的成员变量不能序列化,为什么ArrayList集合可以实现序列化
- 为什么InetAddress类不能new初始化但可以定义对象:The constructor InetAddress() is not visible