Sto lavorando a un mio progetto di apprendimento (in C) e ho pensato di migrarlo in C++ per ottenere ulteriori punti di apprendimento. In parte si tratta di un sistema di garbage collection per una specifica famiglia di oggetti che, in C, normalmente implementerei con un grande malloc/mmap e andare con un semplice mark-and-sweep ingenuo (posso identificare riferimenti e cose del genere già).Raccolta garbage giocattolo: l'operatore è nuovo/cancella abbastanza?
Il mio problema è che stavo considerando di trasportare quell'idea in C++ ma non mi sento abbastanza sicuro sulla mia comprensione del suo schema di gestione della memoria.
Finora ho considerato l'allocazione di un grande pool di memoria e di operatori di overload nuovi ed eliminati su una classe base per chiamare le funzioni Grab/Release del mio pool di memoria, quindi lasciare che la fase di spazzatura del garbage collector elimini gli oggetti mentre li vedeva . È abbastanza? Quali sono le insidie nascoste che non riesco a vedere qui?
Modifica: per chiarire, sono in grado di capire già la durata di vita degli oggetti allocati, quindi non è necessario utilizzare il gc abi. Gli oggetti saranno raramente manipolati dal codice C++ e il codice che li usa è in grado di informare i gc che vengono utilizzati senza necessità di ispezionare lo stack.
Si potrebbe voler leggere i commenti di Bjarne Stroustrup su questo come punto di partenza: http://www.stroustrup.com/C++11FAQ.html#gc-abi Ha anche collegamenti alle pagine di Hans Boehm, quindi penso è un ottimo punto di partenza. –