配列の動的確保とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 配列の動的確保の意味・解説 

配列の動的確保

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/13 01:36 UTC 版)

配列」の記事における「配列の動的確保」の解説

動的メモリ確保」も参照 前述の例では、プログラム中で宣言時に指定した固定サイズ整数定数)による配列確保静的確保であった実用的には、配列要素数が宣言時(あるいはコンパイル時)に静的決まってしまうよりも、実行時要素数を動的に指定して配列確保できたほうが便利なことがある例えば、縦横任意サイズ画像ファイルから全画素情報読み出す場合や、コンピュータ利用可能空きメモリ量に合わせて扱うデータ個数上限変化させたい場合などである。 多くプログラミング言語では、配列サイズプログラム実行時に指定して配列生成する動的に確保する手段用意されている。例えC言語ではmalloc関数calloc関数利用する確保成功するとメモリブロック(配列先頭要素)へのポインタ返却され、このポインタ経由配列操作するint numStudents;// 例え標準入力経由でnumStudentsに生徒数 (> 0) を読み込んだとする。int* score = calloc(numStudents, sizeof(int)); // 要素数がnumStudents、各要素サイズint型サイズあるよう配列動的に確保し、0で初期化する。// 例え標準入力経由で各生徒得点配列score読み込んだとする。double mean = 0;for (int i = 0; i < numStudents; ++i) { mean += score[i]; // 動的に確保した場合でも、配列の添え字シンタックスは同じ。}mean /= numStudents;free(score); // 使い終わった配列のメモリ領域を解放する。 C++などの後発の言語では、動的メモリ確保のために通例new演算子が用意されていることが多く、配列の動的確保には型と要素数を指定するnew[]演算子を使用する。 int numStudents;// 例えば標準入力経由でnumStudentsに生徒数 (> 0) を読み込んだとする。int* score = new int[numStudents](); // 要素数がnumStudentsであるようint型配列動的に確保し、0で初期化する。// 例え標準入力経由で各生徒得点配列score読み込んだとする。double mean = 0;for (int i = 0; i < numStudents; ++i) { mean += score[i]; // 動的に確保した場合でも、配列添え字シンタックスは同じ。}mean /= numStudents;delete[] score; // 使い終わった配列メモリ領域解放するいずれにせよC/C++ではmallocあるいはnewによってヒープ領域から確保したメモリ明示的に解放する必要があり、解放忘れるとメモリリーク原因となる。プログラミング煩雑さを解消するため、C++ではコンストラクタ・デストラクタを使ったメモリ寿命管理手法 (RAII) が使われることが多い。Javaなどの後発言語ではガベージコレクションによる自動解放導入していることが多く、また配列確保に関して静的確保動的確保といった区別をしない(配列確保はすべて動的確保である)ことが多い。 通例上記のようにして「動的に確保され配列」は、後述の「動的配列」とは異なり要素追加時に自動的にサイズ増加させるようなことはできない。 なお、C言語には後述する可変長配列言語機能として備わっているが、メモリ生存期間などの面で違いがある。

※この「配列の動的確保」の解説は、「配列」の解説の一部です。
「配列の動的確保」を含む「配列」の記事については、「配列」の概要を参照ください。

ウィキペディア小見出し辞書の「配列の動的確保」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「配列の動的確保」の関連用語

1
8% |||||

配列の動的確保のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



配列の動的確保のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの配列 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS