Skip to main content

無料リストとは何ですか?

freeフリーリストとは、動的メモリ割り当てを使用するときに実行中のプログラムで使用できるコンピューターメモリロケーションのアドレスを保持するデータ構造です。プログラムが割り当てなければならないときにリストは必要になりますヒープと呼ばれる自由メモリの領域からのスペース。フリーリストの実装は、単純なリンクリストになるか、より複雑なデータ構造になる可能性があります。ソートツリー。ほとんどの高レベルのコンピュータープログラミング言語は、フリーリストを自動的に処理し、手動管理の必要性を削除します。基礎となるオペレーティングシステムから特定の量のメモリを要求する必要があります。使用できるメモリブロックの位置は、フリーリストに保存されます。これらのブロックの1つ以上で利用できる必要があります。適切なメモリlocatioへのポインターがある場合nが返され、リストの要素が削除されます。フリーリストに戻ります。次に割り当てが試行されるときに利用可能になります。リストが空であるため、または利用可能なメモリブロックがないためにメモリ割り当てが失敗する可能性があります。プログラムのリクエスト。リストは通過し、十分に大きい最初のブロックが返されます。ブロックが要求されたサイズの2倍を超える場合、それは半分になり、未使用の半分がリストに戻って追加されます。この方法は、メモリが断片化されたリスクと簡単なコーディングを交換しますリストに返されない可能性のある領域。buddy Memory Managementの異なる形式はBuddy Allocation Systemと呼ばれます。最初のFitシステムとは異なり、Buddyの割り当てはいくつかの無料リストを保持します。1つの特定のサイズのみのオープンブロック。これは、割り当てリクエストを受信すると、リクエストを埋めるのに十分な大きさのブロックを保持するリストが相談され、開いた場所が返されることを意味します。要求されたサイズの2倍未満のフリーブロックは利用可能です。要件を満たすために、より大きなブロックが2つに分割されます。または、はるかに複雑なタイプのデータ構造を参照することもできます。さまざまな種類の種類の木は、シンプルでバランスを保つと、複雑なものを犠牲にして開いたメモリブロックを見つける速度を上げるのに役立ちますソースコード。リンクされたリストは、特殊なソートツリーよりも遅くなる可能性がありますが、プログラムを作成します読み取り、デバッグ、変更がはるかに簡単です。フリーリストとフリースペースを隣接するように統合します。これは、断片化を防ぎ、より大きなメモリブロックを割り当てることを可能にする効果があります。