C++静的配列と動的配列の違い

947 ワード



静的配列の長さは固定されており、アプリケーションのニーズに応じて変更することはできませんが、動的メモリ割り当てはこのニーズを満たすことができます.
例えば、クラスのすべての人の数学の成績を保存するために配列を書いて、もしあなたがこのクラスが全部で50人いることを知っていたら、それはやりやすくて、直接
  int grade[50];
これにより、コンパイラはコンパイル でこの にどれだけのメモリを り てるべきかを っています.これを てと びます.
もしこのクラスの が であれば、ユーザーが で して する がありますか?
な り てが です.
void func(int student_count)

{

    int grade[] = new int[student_count];

} 

ここでstudent_countはコンパイル に であるため、コンパイルフェーズコンパイラはその にどれだけのメモリを り てる があるかを ることができず、 にユーザーがデータを したときにのみ できるため、 にその に にメモリを り てる がある.
に り てられたメモリはスタックにあり、1つの に るたびにスタックが され、スタックには で されるパラメータ、ローカル などの が され、 が されるとスタックが され、このプロセスは に り てられた メモリを します.これはシステムによって に します. に り てられたメモリは、 にスタック にあり、システムが にスタック のメモリを することはできません.freeやdeleteを で いて、オペレーティングシステムがスタック のどの のメモリを する があるかを える があります.