主题:电脑能够容纳最大的数组,他与内存有多少关系。
geophysics
[专家分:20] 发布于 2008-03-27 17:02:00
我现在计算的时候需要很大的数据,但是设置real*8 的数组,系统总是提示错误。
例如:real*8 A(0:100000)
如何判断我在电脑上能计算的最大的数据,当然我可以一直调整这个数组的大小,但是我想知道它与电脑的内存大小的关系,例如若电脑内存为2G,可以设置多大的这样的数组,如何计算,谢谢!
回复列表 (共3个回复)
沙发
jason388 [专家分:6150] 发布于 2008-03-28 06:22:00
对于你的问题,建议改成动态数组试一试。
程序能够使用的内存分为栈和堆两个部分。程序中声明的静态变量(相对动态数组和指针)在栈上分配,动态数组和指针指向的内存在堆上分配。
一般说来,一个程序使用栈的大小是固定的,具体数值由编译器决定,但一般不会太大。所以如果需要的数组很大的话,应该使用动态数组。因为堆的大小只限于系统有效虚拟内存的大小。原则上win32程序可以使用4GB的虚拟内存,但受限于栈内存等各种复杂的因素,实际情况可能很难做到。
可以参考《C++应用程序性能优化》一书。
板凳
geophysics [专家分:20] 发布于 2010-06-12 11:06:00
thanks
3 楼
weixing1531 [专家分:2580] 发布于 2010-06-12 15:38:00
长知识了
我来回复