2009-05-12 18 views
2

GEGEBEN, dass Sie einen festen Speicherbereich bereits zugewiesen haben, den Sie verwenden möchten, welche C- oder C++ - Bibliotheken können Sie eine dynamische Struktur (z. B. einen Hash) in diesem Speicher speichern?dynamische Strukturen im statischen Speicher?

, d. H. Die Hash-Bibliothek darf keine Aufrufe an malloc oder new enthalten, muss jedoch einen Parameter annehmen, der sie über den Speicherort und die Größe des Speichers informiert, den sie verwenden darf.

(Bonus, wenn die Bibliothek verwendet Offsets anstatt Zeiger intern, falls der gemeinsame Speicher auf unterschiedliche Adressräume in jedem Prozess zugeordnet wird, die es verwendet)

+0

Konnte Ihre Frage mit etwas Code präzisieren? Ich sehe nicht, wie man, sobald der Speicher zugewiesen wurde, etwas darin nicht speichern konnte. – MickaelFM

+0

MickTaiwan: #include Klasse my_shared_memory { public: std :: vector V; } mem; mem.V.insert (mem.V.begin(), 3); printf ("Wert% d ist bei% p, nicht im zugewiesenen Speicher bei% p \ n", mem.V [0], & mem.V [0], &mem); – OJW

Antwort

2

Es ist trivial, eine einfache lineare Sondieren Hash-Tabelle anzupassen einen Speicherblock zu verwenden - nur seine Tabelle (n) auf dem zugewiesenen Speicher zu zeigen, wenn Sie es schaffen, und Implementiere nichts, um mehr Speicher zuzuweisen, damit die Tabelle wachsen kann.

+0

Ich habe einen von denen (wie du sagst: ziemlich trivial zu erstellen, vor allem, wenn Sie keine Elemente löschen müssen, aber die Verwendung einer geeigneten Bibliothek kann zu einer besseren Leistung führen – OJW

Verwandte Themen