C言語関係掲示板

過去ログ

No.388.要素数の大きすぎる配列

[戻る] [ホームページ]
No.2628

配列について
投稿者---やすし(2002/09/06 18:25:57)


メモリを小さくプログラムを作りたいのですが、配列の要素数をむやみに大きな値すると よくないのでしょうか? 

No.2646

Re:配列について
投稿者---ともじ(2002/09/08 22:26:45)


こんばんは。

>メモリを小さくプログラムを作りたいのですが、配列の要素数をむやみに大きな値すると よくないのでしょうか? 

メモリを小さくという意味がよくわかりませんが、mallocなどを
使いたくないという意味でしょうか。

配列は関数内で宣言する自動変数と関数外で宣言する外部変数では
メモリ上の置かれる場所が異なります。
自動変数の場合にはメモリ上のスタック領域に置かれ、寿命は
関数が呼ばれているときだけです。
外部変数の場合はメモリ上の静的領域に置かれ寿命はプログラムが
動いている間です。
スタック領域はあまり大きくは確保されていませんので、
自動変数としてスタック領域に大きな配列を置いた場合は、
大きさにもよりますが、スタックオーバーフローする可能性が
あります。
外部変数として静的領域に大きな配列を置いた場合には、
プログラムが実行している間は大きな配列がメモリ上に居座りますので
メモリ使用上問題があります。

やはり、大きめの領域は動的に確保すべきでしょう。