Ich bin auf der Suche nach einer definitiven Antwort (wenn in der Tat eine existiert) auf wie viel Speicher sollte beim Erstellen eines statischen Chunks von Shared Memory über boost::interprocess
managed_shared_memory
zugeteilt werden. Selbst official examples scheinen arbitrarily large Chunks des Speichers zuzuordnen.Wie viel Speicher sollte "managed_shared_memory" zuweisen? (Boost)
Betrachten Sie die folgende Struktur:
// Example: simple struct with two 4-byte fields
struct Point2D {
int x, y;
};
Meine erste Reaktion ist, dass die notwendige Größe 8 Bytes sein würde, oder sizeof(Point2D)
. Dies schlägt kläglich fehl, wenn ich versuche, ein Objekt zu konstruieren, das mir Seg-Fehler zur Laufzeit gibt.
Welcher Lese-/Schreibvorgang verursacht Seg-Fehler? Stapeloperationen? Temporäre Zuteilungen innerhalb von segment.construct()
? Wie viel Overhead ist erforderlich, wenn Shared Memory zugewiesen wird?
Durch Versuch und Irrtum fand ich, dass die Multiplikation der Größe mit 4 für die obige Struktur funktionieren kann, aber auseinander fällt, wenn ich anfange, weitere Felder zu meinem struct
hinzuzufügen. Also, das riecht nach einem schlechten Hack.
Einige mögen argumentieren, dass "Speicher ist billig" in der modernen PC, aber ich stimme nicht mit dieser Philosophie und Abneigung, mehr als ich brauche zuweisen, wenn ich es vermeiden kann. Ich habe gestern die Boost-Dokumente gegraben und konnte keine Empfehlungen finden. Hier lernen Sie heute etwas Neues!
Leute könnten mir hier widersprechen, aber ich habe nie in meinem Leben entlang der Linien von "Gedächtnis ist billig" codiert. Speicher zu kaufen ist nicht unbedingt teuer im Vergleich zu früher, aber es ist sehr ähnlich wie Geld. Je mehr Sie haben, desto mehr verbringen Sie. Jedes Speicherupgrade, das ich mir für meinen Computer gekauft habe, habe ich jetzt ziemlich ausgereizt, da ich mehr Sachen "rennen kann". Ich habe immer versucht, in dieser Hinsicht konservativ zu schreiben, weil es für meine Bewerbung nicht unbedingt billig * ist. Wie auch immer, nur meine 2c auf dem :) –
Ich stimme zu 100%! Und das ist der ganze Grund, warum ich diese Frage stelle. Ich habe nur diesen Kommentar rausgeschmissen, um irgendjemanden davon abzuhalten zu sagen: "Wen kümmert es, leg einfach 1k zu und sei damit fertig." Ich werde versuchen, es in der Post klarer zu machen. –
Ah ok :) "Manche argumentieren" ist viel besser! –