• ベストアンサー

領域の確保について

callocやmallocで領域の確保が出来ると思いますが、領域が確保できなかったりする事があると思います。 char test[100000]; とか配列を宣言した場合も領域が確保されると思いますが、 これは確保する事が出来ない事とかはあるのでしょうか? また確保できなかった場合はどうなるのでしょうか? すいません、なんか勘違いしているかも知れませんが、宜しくお願いします。

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

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

> とか配列を宣言した場合も領域が確保されると思いますが、 > これは確保する事が出来ない事とかはあるのでしょうか? ありえます。 > また確保できなかった場合はどうなるのでしょうか? 環境次第、どうなるかはコンパイラやOSなどによります。 その配列をグローバルに静的に取ったなら、リンカがエラーを出すかもしれません。 出さないこともありえます。 その配列をローカルの自動変数に取ったなら、実行ファイルは生成できてしまい、 実行するとその領域を確保しようとしたあげく、スタックオーバフローする可能性が高いです。 その結果どうなるか、またはそうならないかも含めて環境によります。 # コンパイラやOSを特定すると、もう少し動作が規定できると思いますが、 # 言語一般という話であれば、これ以上の特定はできないと思います。

take_july
質問者

お礼

gcc バージョン 3.2.3 20030502 (Red Hat Linux 3.2.3-20) を使用しておりますが、きちんと書くにはcallocやmallocで領域を確保して 確保されたかどうか確認した方が良いんですね。 小さな領域を使う場合には確保されない事はほとんどありえないと思いますので、気にする事もないのかも知れませんが、大きい領域を使用する場合は callocやmallocで領域を確保するようにする事にします。 ありがとうございました。

その他の回答 (1)

  • yosi_yosi
  • ベストアンサー率35% (165/468)
回答No.1

確かこの場合はコンパイルエラーとなったはずです。

関連するQ&A