回 帖 发 新 帖 刷新版面

主题:电脑能够容纳最大的数组,他与内存有多少关系。

我现在计算的时候需要很大的数据,但是设置real*8 的数组,系统总是提示错误。
例如:real*8 A(0:100000)
如何判断我在电脑上能计算的最大的数据,当然我可以一直调整这个数组的大小,但是我想知道它与电脑的内存大小的关系,例如若电脑内存为2G,可以设置多大的这样的数组,如何计算,谢谢!

回复列表 (共3个回复)

沙发


对于你的问题,建议改成动态数组试一试。

程序能够使用的内存分为栈和堆两个部分。程序中声明的静态变量(相对动态数组和指针)在栈上分配,动态数组和指针指向的内存在堆上分配。

一般说来,一个程序使用栈的大小是固定的,具体数值由编译器决定,但一般不会太大。所以如果需要的数组很大的话,应该使用动态数组。因为堆的大小只限于系统有效虚拟内存的大小。原则上win32程序可以使用4GB的虚拟内存,但受限于栈内存等各种复杂的因素,实际情况可能很难做到。

可以参考《C++应用程序性能优化》一书。


板凳

thanks

3 楼

长知识了

我来回复

您尚未登录,请登录后再回复。点此登录或注册