Ich suche nach einer guten Speicherpool-Implementierung in C.
sollte Folgendes enthalten:
Ich denke, die ausgezeichnete talloc
, die als Teil von Samba entwickelt wurde, könnte das sein, was Sie tun Ich suche nach. Der interessanteste Teil ist, dass jeder von talloc zurückgegebene Zeiger ein gültiger Speicherkontext ist. Ihr Beispiel ist:
Als Antwort auf Ihre besonderen Punkte:
(1) Nicht sicher, welche Anti-Fragmentierung in diesem Fall vorliegt. In C werden Sie ohnehin keine Garbage-Collection kompaktifizieren, daher sind Ihre Möglichkeiten etwas eingeschränkt.
(2) Es bewirbt sich nur um 4% langsamer als plain malloc(3)
, was ziemlich schnell ist.
(3) Siehe Beispiel oben.
(4) Es ist Thread-sicher, solange verschiedene Threads unterschiedliche Kontexte verwenden & amp; Das zugrunde liegende malloc ist threadsicher.
Hast du schon in
nachgesehen?Beide nutzen einen Speicherpool, halten ihn jedoch für den Benutzer größtenteils transparent.
Im Allgemeinen finden Sie die beste Leistung in Ihrem eigenen benutzerdefinierten Speicherpool (Sie können für Ihr Muster optimieren). Ich habe am Ende ein paar für verschiedene Zugangsmuster geschrieben.
Tags und Links c memory memory-management allocation pool