Fortran Coder

楼主: terrytr
打印 上一主题 下一主题

[求助] 请教大家allocate开不了大数组的原因

[复制链接]

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2014-6-15 22:36:13 | 显示全部楼层
是啊。32位系统2GB内存,加上操作系统预留的,运行时库的,还有其他数组,应该是超了。

要么减少数组,要么优化算法,要么使用64位吧

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2014-6-19 14:47:36 | 显示全部楼层
1. 电脑出现内存不足,那说明就真的快空了。所以你的 Fortran 程序实际还是用得差不多了的。
2. 我不明白你的问题2,什么叫 C++ 可以开到内存耗空?你如何判断耗空了?
3. 如果你的windows是32位的,那么你换64位IVF编译器是不行的。编译出的程序根本无法运行。你必须在64位的CPU机器,且64位的windows下,使用64位的编译器重新编译。
4. windows 有个东西,叫虚拟内存,你可以试试设置稍大一些。
5. 操作系统的内存管理,是一个复杂的问题。一些工具,比如任务管理器所显示的,只是一个参考,并不准确。
6. 不管怎样,数组的上限,这是一个编译器的行为。语法并不规定,这不会是 Fortran 与 C++ 的区别。

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2014-6-20 13:20:31 | 显示全部楼层
编译器不利用虚拟内存。编译器编译后的程序,向操作系统申请空间,操作系统再决定在内存或虚拟内存。

如果你确定是64位的CPU,64位的操作系统,64位的编译器,那么应该是没有问题的了。依然不够用,那就真的是上限了。

我认为这个问题,Fortran 与 C 没有区别。即便是编译器不同,也不会差很多。编译器都不是傻子,不会留着可用资源而不用的
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-3 07:13

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表