数组有关问题!
数组问题!!
想问一下VC中定义一维数组大小的有上限的要求吗,是多少啊?
我定义一个数组Data[10240]可以,但如果改成Data[20480]编译连接不会出错
一执行就会出错??难道是数组太大了吗!?
------解决方案--------------------
这个数组定义方式是在栈上的,所以,环境允许的栈的大小将限制这个数组的大小,否则将会栈溢出。
在TC 中,这个栈大小默认是64K,其他环境可能不一样,VC中是2M。
栈的大小属于PE结构的问题, 在编译的时候可以选择.
同时, CreateProcess的时候也可以指定栈的大小. 如果不指定则为PE中记录的大小
栈默认只有64k是commit的. 其他的是有2M-64k是reserve的. 你分配数组的时候
编译器会帮你把reserve的转成commit的, 但是你递归调用的时候不会.
------解决方案--------------------
修改项目设置
或者建在堆上
想问一下VC中定义一维数组大小的有上限的要求吗,是多少啊?
我定义一个数组Data[10240]可以,但如果改成Data[20480]编译连接不会出错
一执行就会出错??难道是数组太大了吗!?
------解决方案--------------------
这个数组定义方式是在栈上的,所以,环境允许的栈的大小将限制这个数组的大小,否则将会栈溢出。
在TC 中,这个栈大小默认是64K,其他环境可能不一样,VC中是2M。
栈的大小属于PE结构的问题, 在编译的时候可以选择.
同时, CreateProcess的时候也可以指定栈的大小. 如果不指定则为PE中记录的大小
栈默认只有64k是commit的. 其他的是有2M-64k是reserve的. 你分配数组的时候
编译器会帮你把reserve的转成commit的, 但是你递归调用的时候不会.
------解决方案--------------------
修改项目设置
或者建在堆上