• ベストアンサー

C言語で1度に使用可能な変数の個数

C言語で1度に使用可能な変数の個数について。 仮にメモリ3GB・32ビットのPCを用いたとして。 1つのプログラム中でdouble型の変数は最大何個使えるのでしょうか。 単に 3000000000/8 と考えても良いのでしょうか? 馬鹿な質問ですが宜しくお願いします。

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

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.4

OSにも依存するが32bitWindowsの場合にアプリケーションが使用可能な最大は2GBです。 で、アプリケーションが使える領域としては約1.7GBから1.8GBです。 Linuxでも似たようなものですが、もう少し利用可能な領域は大きくなりますが、ま3.5GBが限度でしょう。 今時なら64bitOSを前提にした方がいいです。 Unixなんかだともう10年以上前から64bitOSが稼働してますから。

その他の回答 (6)

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.7

メモリ(アドレス空間)上の上限は既に回答があるので、プログラム言語での制限等について。 コンパイル単位(C言語では.cファイル単位)・関数単位で扱える変数の数は言語処理系(コンパイラ)により上限があります。これについては配列にすればサイズは大きくても一変数ですけど。また、リンクできる変数の数にもリンカによる制限があります。配列を使わないでどのくらいの変数を宣言できるかという話だと、これらの制限も無視できないでしょう。 あと自動変数で宣言すると通常は実行時にスタックに配置されますが、スタックサイズは標準だと数MBと小さいのでメモリ上限よりずっと早く限界になります。これはリンク時や実行時の設定で広げられます。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.6

データ領域は通常「数」じゃなくて「量」で考える、ということも知っておいた方がいいでしょう。 単純化すると、「アプリが使えるメモリ量-プログラムのサイズ=データ領域」です。 他にも管理領域やらデバッグ領域やら色々あるので完全にこの式と等しくなることはあまりありませんが。

  • anicicle
  • ベストアンサー率36% (129/356)
回答No.5

駄目。 他の回答と別方向から書くけど、 「変数」はともかく「プログラムの本体」ってメモリにロードされるのは知ってる?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

いろんな理由でダメ. 「メモリが 3 GB である」としても, それは「プログラムから見えるメモリが 3 GB である」ことを意味しない. 1 GB しか見えないかもしれないし, 15 GB くらい見えるかもしれない.

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

メモリを変数で全部埋めて・・・、 ブログ゛ラムはどこに置くの。 作業領域はいらないの。 何よりもCが動く基盤のOSはどこに置くの。 OSの作業領域はどうするの。

  • joqr
  • ベストアンサー率18% (742/4026)
回答No.1

不正解

関連するQ&A

専門家に質問してみよう