私は大学の課題のために malloc 関数を書いています。これが私のアイデアの基本的なレイアウトです。
1) 前のノード、次のノードへのポインター、およびサイズと空席の char を含むノード構造体を定義します。ヒープ内の各領域には、この情報を含む隠しノードが含まれます。
2) マロック関数。最初のノードから始めて、空き状況をチェックする各ノードをループします。ノードが空いていて十分に大きい場合、ノードを含まない領域の先頭への ptr を返します。使用可能なスペースがない場合は、sbrk を使用して、要求されたスペースとノードのスペースを割り当てます。
3)無料機能。parameter-sizeof(struct node) として渡されたポインターに移動し、空きを空に設定します。次に、リストの先頭から始めて、隣接する空きスペースをマージしながらリストをトラバースします。
このアプローチはどのように聞こえますか? 私の主な関心事は、リンクされたリストを実際に開始することです。たとえば、割り当てを開始する前に sbrk を使用してノードを作成し、ptr をグローバル変数として格納する必要がありますか? その場合、malloc 関数がドライバー プログラムによって呼び出されるようにする前に、最初のノードを初期化するにはどうすればよいですか?
前もって感謝します。誰かに私のコードを書くように頼んでいるのではなく、私のアイデアに関する洞察と提案を提供するだけです。