• ベストアンサー

初心者です可変長配列について

ポインタを勉強しているのですが、動的配列とはmallocを使い動的なメモリを確保するとはどういう事なのでしょうか? すいませんが大まかにでも良いので簡単に説明してくださるとありがたいです。 よろしくお願いします。

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

  • ベストアンサー
  • nitorin
  • ベストアンサー率55% (11/20)
回答No.1

プログラムは実際に動作する際には一旦メモリ上に読み込まれます。 プログラムは大まかに言うと次の二つの内容から構成されており 1)プログラム領域(コードセグメント) 2)データ領域(データセグメント) 通常コーディング時のプログラム部分、たとえば代入文( a = 0; ) とかLoop制御文 (for ( i = 0 ; i < X ; i ++ )等のロジック部分は 1)に格納されます。 これにたいして、変数宣言部分の内容は( char[200];等)は 2)のデータ領域にあらかじめ領域を確保される形となります。 ところが、プログラムによっては2)に展開するデータの量が分からない 場合があります。(入力データ量が変動する。)こういった場合 char[200]といったように200を固定で書き記す事ができません。 動的配列はこういった場合に使用する事となります。 動的に確保するという事ですが、実際はOSのシステムコールを使って OS側で使用中のメモリについて管理を依頼しているイメージです。 C言語では確保したメモリを開放するにはfreeという関数を使用しますが やはり、これもOSに確保してもらったメモリを不要となりましたと 伝えるイメージになります。

関連するQ&A