重要なお知らせ

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

【GOLF me!】初月無料お試し

callocやmallocで領域の確保が出来ると思いますが、領域が確保できなかったりする事があると思います。

char test[100000];
とか配列を宣言した場合も領域が確保されると思いますが、
これは確保する事が出来ない事とかはあるのでしょうか?

また確保できなかった場合はどうなるのでしょうか?
すいません、なんか勘違いしているかも知れませんが、宜しくお願いします。

A 回答 (2件)

> とか配列を宣言した場合も領域が確保されると思いますが、


> これは確保する事が出来ない事とかはあるのでしょうか?

ありえます。

> また確保できなかった場合はどうなるのでしょうか?

環境次第、どうなるかはコンパイラやOSなどによります。

その配列をグローバルに静的に取ったなら、リンカがエラーを出すかもしれません。
出さないこともありえます。

その配列をローカルの自動変数に取ったなら、実行ファイルは生成できてしまい、
実行するとその領域を確保しようとしたあげく、スタックオーバフローする可能性が高いです。
その結果どうなるか、またはそうならないかも含めて環境によります。

# コンパイラやOSを特定すると、もう少し動作が規定できると思いますが、
# 言語一般という話であれば、これ以上の特定はできないと思います。
    • good
    • 0
この回答へのお礼

gcc バージョン 3.2.3 20030502 (Red Hat Linux 3.2.3-20)
を使用しておりますが、きちんと書くにはcallocやmallocで領域を確保して
確保されたかどうか確認した方が良いんですね。

小さな領域を使う場合には確保されない事はほとんどありえないと思いますので、気にする事もないのかも知れませんが、大きい領域を使用する場合は
callocやmallocで領域を確保するようにする事にします。

ありがとうございました。

お礼日時:2006/11/09 10:57

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

    • good
    • 0

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