Fortran Coder

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

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

[复制链接]

1958

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1339 元
贡献
565 点

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

11#
发表于 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++ 的区别。

5

帖子

1

主题

0

精华

入门

F 币
34 元
贡献
18 点
12#
 楼主| 发表于 2014-6-20 10:37:53 | 只看该作者
fcode 发表于 2014-6-19 14:47
1. 电脑出现内存不足,那说明就真的快空了。所以你的 Fortran 程序实际还是用得差不多了的。
2. 我不明白你 ...

针对第2点:电脑提示了内存不足,这和第1点是一样的;
第3点中,VS2010是没有64位版本的。IVF有的,至少可以在编译时,选择64平台(plantform)进行编译。我是在64位的操作系统下,选用IVF的64位平台编译运行的。好像这是唯一的办法。windows平台下。也可能是我孤陋寡闻吧。如果大家知道,请告知;
第4点,我的虚拟内存开到了4G,而且实在不清楚,编译器是怎么利用虚拟内存的;
第5点,我也觉得是这样的;
第6点,有可能是编译器不一样的问题。
不管怎样,谢谢你的回复!

1958

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1339 元
贡献
565 点

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

13#
发表于 2014-6-20 13:20:31 | 只看该作者
编译器不利用虚拟内存。编译器编译后的程序,向操作系统申请空间,操作系统再决定在内存或虚拟内存。

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

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

本版积分规则

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

GMT+8, 2024-4-20 04:39

Powered by Tencent X3.4

© 2013-2024 Tencent

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