• ベストアンサー

VC++におけるメモリ使用量について

現在VC++6.0を使用して数値解析を行っているのですが、ワークステーションでメモリを1256MBに増設して、500MBくらいのメモリを使用する解析を行ったところ、「トータルイメージサイズが最大値(268435456)を越えています; イメージは動作しない可能性があります」という警告が出ました。しかし実行してみると正常に動作します。 なぜそんな警告がでるのでしょうか?どなたか教えてください、お願いします。 ※OSはWINDOWS2000を使用しています。

質問者が選んだベストアンサー

  • ベストアンサー
noname#9414
noname#9414
回答No.3

補足読みました。 よく見たら、268,435,456バイトって256MBですね。 で、MSDNを調べてみたところ、単純にリンカの出力する 警告のようですね。 #LNK4013、LNK4084にあります。 これによると、/BASEオプションで設定されている、 もしくはディフォルト値を越えているために、リンク時に 警告をはき出すようです。どうやらこれらを見てみると、 アプリケーションの最大サイズは256MBとされている ようです。 DLLやOCXなどにしてここのアプリケーションサイズを 小さくするか、メモリを動的に取得するようにして、 サイズを減らさないと、その警告は消えないと思います。 #ちなみに実行結果が正常なのも保証はされないと #思いますよ。 って、toysmith様も同じことを書かれていますね。 ではでは☆

asamaken
質問者

お礼

ご回答ありがとうございます。 メモリを動的に取得できるようにしてみたいと思います。 大変参考になりました。ありがとうございます。

その他の回答 (2)

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.2

Windowsシステムではアプリケーションサイズ(CODE+DATA)が2^28バイトを超えるとこの警告を出すようです。 多分、グローバルで大きな配列を確保しているのでしょう。 数値解析だと大きな配列は必須ですから他の方法を考える必要があるでしょう。 (アルゴリズムを見直せば何分の1かになるかもしれませんが) VirtualAllocを使えば4GBまでの領域を確保可能です。 ただし、仮想空間で確保する為ディスク開き容量、スワップ頻度などを考慮しなければなりません。

asamaken
質問者

お礼

ご回答ありがとうございます。 大変参考になりました。

noname#9414
noname#9414
回答No.1

単純に、.objファイルが大きすぎるのではない でしょうか? それにしても数値解析だけで500MBというのは すごいですね・・・ #もう少しメモリの使い方を考慮した方が計算が #早くなるのではないでしょうか? #OSのスワップも入るだろうし・・・ ではでは☆

asamaken
質問者

補足

ご回答ありがとうございます。 早速調べてみたところ、.objファイルはどれも数KB程度で小さいです。 私の扱っている解析手法はもともとスーパーコンピューターで行われていた手法で、超並列化は行えてもメモリを削減することは解析手法の性質上不可能です。 500MBというのもWSの性能を見るために行ったテストで、実際は現在の1.2GBでも全然足りないというのが現状で、まだまだメモリを増設する必要があります。 ところで、このWSは最初、メモリが256MBでメモリを増設する前にVC++をインストールしました。そのためVC++が、メモリが増設されたのを認識していないということはあるのでしょうか?

関連するQ&A

  • メモリの増設について

    現在、使用しているPCのメモリは最大の512MB まで増設しています。(256MBを2枚) メモリ不足と言うエラーメッセージが出ることも時々 あるので増やせるものなら増やしたいと思っていますが、 最大の数値以上に増設する事はやはり不可能でしょうか? 何か別の方法で増設すると言う事は出来ないでしょうか? 何方かアドバイスを頂けたらと思います。 宜しくお願い致します。m(__)m

  • メモリの使用量について

    メモリの使用量の確認方法について教えてください。 freeコマンドを実行すると以下のように表示され、2GB中1.3GBを使用していることが分かります。 total used free shared buffers cached Mem: 2072828 1358364 714464 0 175372 836028 -/+ buffers/cache:346964 1725864 Swap:2096472 0 2096472 どのプロセスがメモリを消費しているか調べたいと思い、topコマンドを実行後、"M"でメモリの消費量の多い順にプロセスを並べ替えて、使用率の合計を計算してみました。 しかし、その合計値は約20%ほどです。 2GBのメモリを積んでいますので400MBほどしか使用していないことになります。 freeコマンドとtopコマンドでどうしてこんなに大きな差が出ているのでしょうか? また、どちらが正しい値なのでしょうか? ご存知の方がいらっしゃいましたら教えてください。 よろしくお願いいたします。

  • メモリ増設

    この度、メモリを増設したのですが不思議な現象で悩まされております。 困った現象としては、256MB×2⇒512MB×2と増設を行ったのですが メモリを認識しません。(正常に立ち上がりません) あれこれ苦戦した結果としては、特定のスロット(スロット1とする) で512MBメモリを認識しません。スロット2は認識する為256MB×1&512MB×1では正常動作します。 メモリが2枚あるので考えられる組合せを試したのですが、特定のメモリでは無くスロット1に512MBの組合せはPCが立上がりません。 (ちなみにM/Bの最大メモリは1024MBになります。) 何が原因なのでしょうか?ご教示頂きたく宜しくお願い致します。 メモリ自体に問題無い為、困っております。

  • メモリの使用量

    メモリの総容量は512MBでブラウザはIEを使っています。 タスクマネージャのプロセスタブを見るとブラウザを開いた分だけ使用量が増す様ですが、これはタブブラウザを使うと防げるんですか? 最近、メモリ最大使用量が物理メモリの最大値を超える様になってきて、特に常駐ソフトなどを入れた覚えもないのでちょっと疑問に思っています。 詳しい方いらっしゃいましたらぜひ教えてください。 よろしくお願いします。

  • これらのメモリは同じものですか?

    PCのメモリを増設しようと考えています。 使用してるPCは、 FMV BIBLO NB55M/Tでメモリは512MBです。 対応するメモリを調べたところ、 エレコムのED333-N512MとバッファローのDN333-A512MZ で512MB増設しようと思うんですが、 これらはどちらでも正常に動作するでしょうか? メーカーが違うだけなんですか? またどちらがおススメか教えてください。(性能的に) メモリ増設は初めてなもので・・・

  • スマホのメモリ使用量について…

    端末内のメモリ使用量…どれくらい使ってるのか確認のために開発者向けオプションからメモリをみるとスクショ上部の結果で逆に実行中のサービスからみるとスクショ下部の結果で同じ端末内のメモリ(RAM)のことなのになぜ数値に違いがあるのかと思いまして… メモリからみると割と占めてて空きがあまり無いからサクサクいかないのかな?と思ったり実行中のサービスからみると空きが割とあってサクサクいくんじゃん?と思ったりしてメモリ使用量に関してどっちをチェックすればいいのかわからなくなりました… あまり気にすることではないかと思うんですがちょっと気になったもので…前のスマホはRAMが1Gしかなくて空きが300mbくらいしか無くてサクサクいかなかったので 今のスマホは3Gもあるから余裕!とか思ってたらスクショ上部の数値だったので… うまく説明できてないかもしれないですがよろしくお願いします。 機種はAQUOS sense2 です。 スクショ見にくいかもしれないですが…

  • XPでのメモリ使用量について

    WINDOWS-XP-SP2で、512MB×2枚積んでいます。 ふと気になったのですが、色んなアプリ(IE,JaneStyle,フォトショップエレメンツなど)を使っては終了させて、メモリの消費量を メモリの掃除屋さんなどで見ると、1000MB中、使用量は400~480MB程度です。起動直後でも400MB程度。 ハードディスク全容量は160GBで、うち空きは100GB程度です。 使用量400~480MBというのは、搭載メモリ1GBに対して妥当なところなのでしょうか?(各ソフトを普通に動作させて終わらせた直後時) 最近、IEなどの動作が遅い時があり、ワードやフォトショップもその日初めて起動させるときに以前よりもたつくようになってきたので、あと1GB程度増やそうかと思っているところです。  スワップが生じることは無いのですが、増設して体感的速度の向上は期待出来るのでしょうか? よろしくお願い致します。

  • メモリ使用量について

    タスクマネージャーで起動時にプロセスを選択してメモリ使用量を見てみますとどれも多くメモリを使用しています。そしてパフォーマンスの物理メモリ利用可能の数値を見てみるとかなり少なく原因が全くわかりません。しかし何時間もあとに再度チェックしてみるとメモリ使用量が正常になっております。しかし何時間もたたないと正常に戻らないのはおかしいと考えたのですが、何か原因がわかる方は教えてくれればありがたいです。パソコン初心者なので分かりやすく説明していただければ幸いです。

  • VC++とアプリケーション上の実行の違い

    VC++で作ったプログラムをデバッガ上で起動した場合と、ビルドにより出来た実行ファイルを直接起動した場合とでは、違いがあるのでしょうか? 具体的にはデバッガ上でプログラム中止時にアクセス違反の例外がでていたのですが、動作は正常だったため、試しにアプリケーションから直接起動したところ、処理速度がかなり落ちてしまいました。勿論例外の警告も出ませんでした。 その後デバッガ上で起動しても同様に処理速度が落ちます。 アクセス違反の例外が出ているアプリケーションをVCを通さず実行するとPC自体の設定か何かを壊してしまったりするのでしょうか? ちなみにアプリケーションは動画の制御であり、従来はコミットチャージがPCメモリの容量1.5GBまで終始達していたのですが、処理速度が遅くなってからはVCのメインメモリ使用量255MBまでしか行かなくなりました。映像出力用のメモリかなんかが、割り当ててもらえなくなったりしてるのでしょうか。 ちなみに仮想メモリはキャンセルしています。

  • メモリの使用可能容量

    はじめまして。 あのパソコンのメモリを増設できる、最大容量がメーカーの表示サイトだと256MBでした。 あるサイトで、512MBまで使用可能なことがわかりました。 早速384MBに増設したのですが、マイコンピューターでは、384とでるのですが、色々サイトで調べてみると、実際には、認識はしていても、256までしか、使用していない事もある。というような事が書いてありました。 実際に384MB使っているか確認したいのですが、どうしたらいいのでしょうか?

専門家に質問してみよう