SuperNoisy
Czirkos Zoltán · 2022.06.21.
Memóriakezelést, explicit konstruktor- és destruktorhívásokat ellenőrző segédosztály.
A SuperNoisy osztálynak az összes erőforráskezelő függvénye (konstruktor, destruktor, értékadó operátor) meg van valósítva, és azok mind a képernyőre logolnak. Ezen felül, az egyes objektum példányok közös tárolóba vannak regisztrálva, így az osztály ellenőrizni tudja a memóriakezelési hibákat: többszörös konstruktorhívásokat, destruktorhívásokat, esetleg üres (elmozgatott) objektumok elérését.
A kód letölthető innen: supernoisy.cpp, tesztekkel: supernoisy_test.cpp.
Példa:
int main() {
Noisy x;
Noisy y = x;
new (&y) Noisy;
}
Noisy letrehozva @0x7ffcb7cf4100 Noisy masolva ide @0x7ffcb7cf4110 innen @0x7ffcb7cf4100 Noisy megszunt itt @0x7ffcb7cf4110 terminate called after throwing an instance of 'std::logic_error' what(): Letezo objektumra hivsz konstruktort Aborted
int main() {
{
Noisy n;
Noisy::report();
}
std::cout << std::endl;
Noisy::report();
}
Noisy letrehozva @0x7ffca0082234 1 db objektum letrehozva 1 db objektum ervenyes, nem ures Noisy megszunt itt @0x7ffca0082234 0 db objektum letrehozva 0 db objektum ervenyes, nem ures