2

4MB のノード (ノードが 1 つだけの完全なリンク リスト) がある場合、ノードをそれぞれわずか 8 バイトの小さなチャンク (ノード) に分割するにはどうすればよいですか?

head = (list_t*) ptr;
head->size = 4MB;
head->next = NULL;

PS: 自分で malloc を実装しようとしているので、リンク リストを使用してメモリを初期化しようとしています。

4

1 に答える 1

3

次のようなポインター演算を使用して、さらに8バイト連続してオフセットを取得します。

list_t *next;    
next = head + 1; /* Note that this implicitly means "1 * sizeof(list_t)" */
next->size = head->size - sizeof(list_t);
next->next = NULL;
head->next = next;

まだ行き詰まっている場合は、より詳細な例を投稿できます。

独自のメモリを管理する連結リストを作成していますか (この場合、おそらくデータ ポインタも必要です)、または連結リストを使用するメモリ マネージャを作成していますか (この場合、使用するよりも少し多くのメモリを割り当てたいと考えています)。それ自体;-))?

于 2013-10-12T20:43:17.847 に答える