1. ホーム
  2. c++

[解決済み] C++における静的配列と動的配列の比較

2022-03-05 13:03:51

質問

C++の静的配列と動的配列の違いは何ですか?

授業で課題を出さなければならないのですが、静的配列は使わないで、動的配列だけを使うようにと書いてあります。本やネットで調べてみたのですが、よくわからないようです。

staticはコンパイル時に、dynamicは実行時に作成するものだと思っていましたが、メモリ割り当てと勘違いしているのかもしれませんね。

C++のスタティック配列とダイナミック配列の違いについて教えてください。

どのように解決するのですか?

ローカル配列はスタック上に作成され、自動的に保存期間が設定されます。手動でメモリを管理する必要はありませんが、その配列が含まれる関数が終了した時点で破棄されます。また、サイズは必ず固定です。

int foo[10];

で作成された配列は operator new[] は動的な保存期間を持ち、ヒープ上に保存されます (技術的には "free store")。これらは任意のサイズを持つことができますが、スタックフレームの一部ではないため、自分で割り当てと解放を行う必要があります。

int* foo = new int[10];
delete[] foo;