kadreg profil: Utilisateur | Je suis en train de faire des essais avec le Boehm Garbage Collector. Voici mon petit programme de test : Code :
- #include <iostream>
- #include <string>
- /* garbage collector */
- #include <gc/gc_cpp.h>
- using namespace std;
- class Personne {
- int id;
- string _nom;
- string _prenom;
- public:
- Personne (const string &n, const string &p):_nom(n), _prenom(p) {
- cout<<"creating "<<_prenom<<" "<<_nom<<endl;
- }
- virtual ~Personne () {
- cleanup ();
- }
- void cleanup () {
- cout<<"deleting "<<_prenom<<" "<<_nom<<endl;
- }
- };
- void fonction_locale () {
- Personne p4 ("Thomas", "Edison" );
- Personne *p5 = new (GC) Personne ("Lapin", "Malin" );
- }
- int main (int argc, char **argv) {
- cout<<"start..."<<endl;
- Personne *p1 = new (GC) Personne ("Einstein", "Albert" );
- Personne *p2 = new (GC) Personne ("Boer", "Hans" );
- delete p2;
- cout << "appel locale"<<endl;
- fonction_locale ();
- cout << "quitting locale"<<endl;
- cout<<"end!"<<endl;
- }
|
Je vois bien passer les création d'objets, mais pas les passages dans les destructeurs des objets non détruits explicitement ou par les effets de pile. J'ai bien tenter de faire dériver ma classe de gc_cleanup, mais ça ne change rien. Comment faire pour que le destructeur soit appelé lorsque le GC détruit un objet ? PS : mes objets doivent tout de même être bien détruit, puisque j'ai pas de fuites mémoires selon valgrind. ---------------
brisez les rêves des gens, il en restera toujours quelque chose... -- laissez moi troller sur discu !
|