- ベストアンサー
メモリ不足になってしまう。
教えてください。 現在陥っている現象:「メモリ不足になってしまう」配列の領域をRedimで動的に確保しようとしています。 例えば、 dim A() as byte dim B() as byte dim C() as byte redim A(8000,60000) redim B(8000,60000) redim C(8000,60000) 上記のように配列を確保する予定なのですが、 メモリ不足になってしまいます。 ひとつの変数の容量が480MB程度であると思います。 3つ全部でも1440MBであるのですが、物理的な メモリ容量は、512M*4を実装しています。 上記の変数名で言いますと、 Aの変数の領域確保には問題なく成功するのですが、 その次の行のBのところでエラーになります。 現在、物理的なメモリには空きがあるにもかかわらず このような現象になってしまい、困っています。 どなたか原因解決の糸口になるような回答をお持ちの方、 教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>メモリ容量は、512M*4を実装しています。 >物理的なメモリには空きがあるにもかかわらず 配列だけ考えれば確かにそうですが、その他にも物理メモリを使用しているモノがたくさんあるので、足りなくなることがあります。 ハードディスクの空きはありますか? 十分あるのに不足になる原因として考えられるのは、動的に大きな連続した領域を確保しようとしているからだと思います。 動的に確保しなければならないのには理由があるのですか? 静的な確保に変更可能ならば、多少多めに確保しても仮想メモリに割り当てるので確保できるはずです。 また、一度に多くの配列を割り当てるのではなく、細かく分割した方が、メモリ待避・解放のレスポンスも向上しますし、メモリ不足を回避するのにも役立ちます。 最後に単なる思いつきですが、3つのredimの間に適当な処理をはさむとうまくいくかもしれません。
その他の回答 (1)
- mld_sakura
- ベストアンサー率20% (264/1282)
一般的にこれだけの多次元の大量配列ならば当然です。 普通DBを使いますが。