これらの3つの関数をC言語で再コード化する必要があります。目標は、異なるプログラムやシステムコールのシステム関数を置き換える必要があります。CでのMalloc、free、reallocの振る舞い
私は男を読んで以来、私は実際にこれらの機能の動作を理解していません、私はbrk()
とsbrk()
を使用することが許可されていることを知っています。
これらの3つの関数をC言語で再コード化する必要があります。目標は、異なるプログラムやシステムコールのシステム関数を置き換える必要があります。CでのMalloc、free、reallocの振る舞い
私は男を読んで以来、私は実際にこれらの機能の動作を理解していません、私はbrk()
とsbrk()
を使用することが許可されていることを知っています。
malloc
は基本的にメモリページ(Cf getpagesize(2)
)を事前に割り当て、呼び出されたときにそれらの事前割り当て領域の使用可能部分へのポインタを返します。 malloc
は、事前に割り当てられたメモリセグメントのどの部分が使用されているか、どれが空いているかを「記憶」しなければなりません。 この記事を読む:https://www.cocoawithlove.com/2010/05/look-at-how-malloc-works-on-mac.htmlが役立つ可能性があります。 (私は大学の割り当てとしてmac Osでmallocを再コーディングしたとき、それは私にとって大きな助けとなったことは分かっています;))。
少しだけ検索すると、2つのシステムコールを使用するメモリアロケータの例は数多くあります。 –
明らかにあなたは何かコースやクラスを取っています。あなたはあなたの教材をチェックアウトする必要があります、これはカバーする必要があります。誰もマン・ページだけで学生を指差し、それらの情報に基づいてゼロからヒープ・アロケータを書くことは期待できません。 – unwind
'brk'と' sbrk'のmanページも読んでいますか?そこにはっきりしていないものがありますか?これまでに何をしようとしましたか? – skyking