为什么int arrayq[2288][2288]失败
int array1[2288][2288];//int 4字节,总共16M多,为什么会分配失败,打开图像30多M都没问题呢
[解决办法]
在主函数外面可以,但在函数里面是不可以的,栈区默认只有这么多
[解决办法]
vs的默认栈空间是 4M吧。
建议使用new...........
[解决办法]
LZ,你申请的是栈内存,正如2楼所述,VS的默认栈空间是4M,所以你申请那么多必然失败,请用new
[解决办法]
注意程序的栈区间和堆空间。
函数的参数,局部变量都是栈空间,栈空间都是不大的,编译器可以设置,大约就几个M级别的。
用户动态申请的内存时在堆区间上的,C中用malloc,c++中用new来申请。
你这样写int array1[2288][2288];一定是局部变量,超过限制了。
在堆上能够申请到的空间和操作系统有关。
32位的操作系统用户最大可申请2G,及时你插了4G的内存条也没用。
64位的操作系统不受限制,有虚拟内存的帮助几乎是想申请多少申请多少。
不过申请多了,速度会很慢,因为内存和硬盘调入调出还是很费时间的。
说多了,嗦了。