Ich arbeite an einem Lernprojekt von mir (in C) und dachte daran, es für zusätzliche Lernpunkte nach C++ zu migrieren. Ein Teil davon beinhaltet ein Garbage-Collection-System für eine bestimmte Familie von Objekten, die ich in C normalerweise mit einem großen malloc/mmap implementieren würde und mit einem einfachen naiven Mark-and-Sweep (ich kann Referenzen und ähnliches identifizieren) bereits).Toy Garbage Collection: Ist der Operator neu/löschen genug?
Mein Problem ist, dass ich erwog, diese Idee zu C++ zu transportieren, aber ich fühle mich nicht sicher genug über mein Verständnis des Speichermanagements.
Bisher dachte ich über die Zuweisung eines großen Speicherpools und das Überladen von Operatoren new und delete auf einer Basisklasse, um die Grab/release-Funktionen meines Speicherpools aufzurufen und dann die Sweepphase des Garbage Collectors zu löschen . Ist das genug? Was sind die versteckten Fallstricke, die ich hier nicht sehe?
Edit: um zu klären, ich bin in der Lage, die Lebensdauer der zugeordneten Objekte bereits herauszufinden, so dass es nicht notwendig ist, die GCI ABI zu verwenden. Die Objekte werden selten durch C++ - Code manipuliert, und der Code, der sie verwendet, ist in der Lage, zu informieren, dass sie verwendet werden, ohne dass der Stapel überprüft werden muss.
Vielleicht möchten Sie Bjarne Stroustrup die Kommentare dazu als Ausgangspunkt lesen: http://www.stroustrup.com/C++11FAQ.html#gc-abi Es hat auch Links zu Hans Boehm Seiten, so denke ich Es ist ein ausgezeichneter Ausgangspunkt. –