重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

プログラム中に、4バイトのデータを(2^24)×3個の配列に確保し計算するところがあるのですが、
この場合の配列のみのデータを
メモリに確保するためのメモリの必要容量は
4×(2^24)×3=201326592バイト=201.32・・メガバイトになりますよね。
メモリはOSなどアプリケーションを立ち上げる時にも使いますが、それらの分を差し引いても、202MBぐらい空いてるとすれば上記のことをできるのでしょうか?
 プログラムを実行すると
例外 unknown software exception (0xc0000fd)がアプリケーションの0x00401707で発生しましたと
なって終了してしまいます・・
それとももともと確保できる容量はソフト的に決まってるのでしょうか。
ちなみに使用環境のPCのメモリは512MBのを一個刺してあります。コンパイラはVCです。

A 回答 (2件)

stackのオーバーフローによるエラーなのかもしれません。


通常スタックにはそれほど大きなメモリは確保されません。オプションでスタックサイズを変更することは可能だと思いますが、
それより確保する位置を変えて関数の外にするか
static宣言して確保するか
あるいはmallocでヒープから確保する
ようにした方がいいでしょう。
    • good
    • 0
この回答へのお礼

みなさんのおっしゃる通りデバックモードで起動すると、stack overflowとなりました
mallocの存在は知っていますが、使ったことないのでstatic宣言でうまくいきました。
ありがとうございます。

お礼日時:2005/02/15 13:43

Stack Overflow で出たりするエラーのようですね。


OSにもよるでしょうが、PCで動くOSであれば
メモリは使用量が物理メモリの搭載量を超えても
HDDにスワップするので問題ないとは思いますが、
それでもStack Overflowは出るかもしれません。
どのようにそのメモリを確保しているかも問題ですが、
それ以前に、そんなにメモリを食う処理自体が問題ですね。
本当に同時にそれだけのメモリを確保する必要があるのか
(データをファイルに外出しできないか?など)
というところを検討した方がいいと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!