C++静的配列と動的配列の違い
947 ワード
静的配列の長さは固定されており、アプリケーションのニーズに応じて変更することはできませんが、動的メモリ割り当てはこのニーズを満たすことができます.
例えば、クラスのすべての人の数学の成績を保存するために配列を書いて、もしあなたがこのクラスが全部で50人いることを知っていたら、それはやりやすくて、直接
静的配列の長さは固定されており、アプリケーションのニーズに応じて変更することはできませんが、動的メモリ割り当てはこのニーズを満たすことができます.
例えば、クラスのすべての人の数学の成績を保存するために配列を書いて、もしあなたがこのクラスが全部で50人いることを知っていたら、それはやりやすくて、直接
int grade[50];
これにより、コンパイラはコンパイル でこの にどれだけのメモリを り てるべきかを っています.これを てと びます.
もしこのクラスの が であれば、ユーザーが で して する がありますか?
な り てが です.void func(int student_count)
{
int grade[] = new int[student_count];
}
ここでstudent_countはコンパイル に であるため、コンパイルフェーズコンパイラはその にどれだけのメモリを り てる があるかを ることができず、 にユーザーがデータを したときにのみ できるため、 にその に にメモリを り てる がある.
に り てられたメモリはスタックにあり、1つの に るたびにスタックが され、スタックには で されるパラメータ、ローカル などの が され、 が されるとスタックが され、このプロセスは に り てられた メモリを します.これはシステムによって に します. に り てられたメモリは、 にスタック にあり、システムが にスタック のメモリを することはできません.freeやdeleteを で いて、オペレーティングシステムがスタック のどの のメモリを する があるかを える があります.