none
64bitで2Gb以上のメモリを使用できない RRS feed

  • 質問

  • [core i7 960] [メモリ18G] [windows7 64 bit] [visual fortran2008] [visual fortran composer xe 2011]の環境でプログラミングをしています。

    ですが、メモリが2Gbを超えると「~は有効なwin32アプリケーションではありません」と表示されてしまいプログラムを実行することができません。

    プラットフォームはx64にしてあります。64bitでは2Gb制限が解除されると思っていたのですが、何か特別な処理を行わないといけないのでしょうか?

    色々調べてみたのですがわかりませんでした。

    どなたか解決方法を知っている方がいましたらご教授ください。よろしくお願いします。

    2012年2月3日 16:05

回答

  • 「メモリが 2GB を超えると起動できない」がよくわかりません。
    第三者にも容易にわかる情報をご提示ください。(サンプルコードなど)
    配列か何か、コード上で定義するものなのですよね?

    たぶん、制限に引っかかってるのでは。以下のページで言う static data に相当する使い方をしているなら、だめだと思われます。
    dynamic data と明示されているような使い方を考えてください。
    http://software.intel.com/en-us/articles/memory-limits-applications-windows/


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2012年2月3日 23:53
    モデレータ

すべての返信

  • 「メモリが 2GB を超えると起動できない」がよくわかりません。
    第三者にも容易にわかる情報をご提示ください。(サンプルコードなど)
    配列か何か、コード上で定義するものなのですよね?

    たぶん、制限に引っかかってるのでは。以下のページで言う static data に相当する使い方をしているなら、だめだと思われます。
    dynamic data と明示されているような使い方を考えてください。
    http://software.intel.com/en-us/articles/memory-limits-applications-windows/


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2012年2月3日 23:53
    モデレータ
  • PARAMETER(X=5500)
    PARAMETER(Y=5500)
    INTEGER*4 I,J,K,L
    REAL*8 T1,T2,T3
    DIMENSION A(-X:X,-Y:Y),B(-X:X,-Y:Y),C(-X:X,-Y:Y),D(-X:X,-Y:Y)

    このように必要な領域をパラメータで定義して、配列をつくっています。

    64bitでもstatic dataは2gb制限があるということなのでしょうか?

    だとしたら、allocate文などをつかって回避するしかないないですよね。

    分かりにくかったらすいません。

    2012年2月5日 5:19
  • 64bitでもstatic dataは2gb制限があるということなのでしょうか?

    前述のページは読まれましたか?
    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2012年2月5日 7:38
    モデレータ
  • すいません、書いてありましたね。

    確かにstatic data は32、64bitかかわらず2Gbまでなのですね。

    ありがとうございました!

    2012年2月6日 7:02