動的メモリ割り当てとは
ヒープベースのメモリ割り当てとも呼ばれる動的なメモリ割り当ては、静的なメモリ割り当てとは対照的なメモリ管理の一種です。 動的メモリ割り当てでは、プログラマは各プログラムに割り当てるメモリの量とメモリに保持する時間をコンピュータに正確に伝えます。 これにより、メモリの過剰使用やプログラムの停止など、静的メモリ割り当てで発生する問題の多くが解決されます。 多くの問題を解決しますが、プログラマーがメモリにダンプするように指示するのを忘れると、動的メモリが問題になる可能性があります。
デフォルトでは、コンピューターは静的メモリ割り当てを使用します。 つまり、プログラムが使用されなくなった場合や、保持されたメモリが危険になったりパフォーマンスの障害になったりしても、プログラムが使用されるとメモリが保持されます。 たとえば、ユーザーが3 MBマシンで2メガバイト(MB)を使用するプログラムの実行を停止し、2番目のプログラムにさらに2 MBが必要な場合、2番目のプログラムは機能しません。 これは、他のプログラムのためにコンピューターに十分なメモリが残っていないためです。
静的メモリの割り当てでは、ユーザーまたはプログラマは、保存するメモリの量を指定することも、プログラマが静的メモリにメモリをダンプしてリソースを解放するように指示することもできません。 これが、上級ユーザーが頻繁に動的メモリ割り当てを使用する理由です。 プログラマは、リソースを保持する期間など、メモリに関するすべてを制御できます。
たとえば、プログラマは動的メモリ割り当てを1 MB以下に抑えるように設定できます。これにより、他のプログラムを開くのに十分なシステムメモリが節約されます。 静的メモリは通常プログラムに関するすべてを保持するので、これを行うことができますが、動的メモリはプログラマがすべてではなく一部のデータを保持する低い値に設定できるようにします。 同時に、静的メモリは依然として必要であり、この割り当てスキーマで設定できます。
動的メモリ割り当てに伴う潜在的な問題は、めったに役に立たないものですが、プログラマが時間値の設定を忘れると動的メモリがいっぱいになる可能性があることです。 時間値が設定されていない場合、最終的にメモリを解放する静的メモリとは異なり、動的メモリは情報を保持します。 プログラムにガベージダンプアプリケーションがあり、ほとんどの場合、プログラムはメモリをクリアするために一定時間後にアクティブになります。 メモリ割り当ての時間値を設定することは、依然としてベストプラクティスです。