// test_objectDB.cpp #include #include #include #include #include class Genitore { public: U_MEMORY_TEST Genitore(const char* n = "genitore") { U_REGISTER_OBJECT(Genitore) nome = n; } ~Genitore() { U_UNREGISTER_OBJECT(0) } Genitore(const Genitore& g) { *this = g; } Genitore& operator=(const Genitore& g) { nome = g.nome; return *this; } // friend ostream& operator<<(ostream& os, const Genitore& genitore) { return os << genitore.nome; } const char* dump(bool) const { return nome; } protected: const char* nome; }; class Figlio : public Genitore { public: Figlio(const char* n = "figlio") : Genitore(n) { U_REGISTER_OBJECT(Figlio) } ~Figlio() { U_UNREGISTER_OBJECT(0) } const char* dump(bool) const { return nome; } }; static void one() { U_TRACE(5, "one()") Figlio* vettore_figli; U_NEW(Figlio, vettore_figli, Figlio[3]); } static void two() { U_TRACE(5, "two()") Figlio* vettore_figli; U_NEW(Figlio, vettore_figli, Figlio[3]); } int U_EXPORT main (int argc, char* argv[]) { u_init_ulib(argv); U_TRACE(5, "main(%d,%p)", argc, argv) U_SET_LOCATION_INFO; Figlio figlio; U_SET_LOCATION_INFO; Genitore genitore; one(); two(); Figlio* vettore_figli; U_NEW(Figlio, vettore_figli, Figlio[1000]); delete[] vettore_figli; ::exit(0); }