Articles of distruttore

Un distruttore viene chiamato quando un object esce dall’oscilloscopio?

Per esempio: int main() { Foo *leedle = new Foo(); return 0; } class Foo { private: somePointer* bar; public: Foo(); ~Foo(); }; Foo::~Foo() { delete bar; } Il distruttore sarebbe chiamato implicitamente dal compilatore o ci sarebbe una perdita di memoria? Sono nuovo nella memoria dynamic, quindi se questo non è un caso di […]

In quali circostanze i distruttori C ++ non verranno chiamati?

So che i miei distruttori vengono chiamati al normale svolgimento dello stack e quando vengono lanciate eccezioni, ma non quando viene chiamato exit (). Ci sono altri casi in cui i miei distruttori non verranno chiamati? Che dire dei segnali come SIGINT o SIGSEGV? Presumo che per SIGSEGV non vengano chiamati, ma per SIGNINT lo […]

Uscirà () o un’eccezione impedirà il richiamo di un distruttore di fine campo?

Diciamo che ho il seguente codice: struct mytype { ~mytype() { /* do something like call Mix_CloseAudio etc */ } }; int main() { mytype instant; init_stuff(); start(); return 0; } È garantito che il distruttore venga chiamato anche se exit () viene utilizzato da qualche parte all’interno di start ()?

Distruggi manualmente gli oggetti C #

Sono abbastanza nuovo nell’apprendimento di C # (da Java e C ++ in background) e ho una domanda sullo smaltimento dei rifiuti manuale: è persino ansible distruggere manualmente un object in C #? Conosco l’interfaccia IDisposable , ma suppongo di avere a che fare con una class che non ho scritto e non la implementa? […]

Perché il distruttore della class ha chiamato due volte?

Mi scuso se la domanda sembra sciocca, stavo seguendo gli esperti in SO e provando alcuni esempi io stesso, e questo è uno di loro. Ho provato l’opzione di ricerca ma non ho trovato una risposta per questo tipo. class A { public: A(){cout<<"A Contruction"<<endl;} ~A(){cout<<"A destruction"<<endl;} }; int main() { vector t; t.push_back(A()); // […]

Ruby: distruttori?

Ho bisogno di creare occasionalmente immagini con rmagick in una directory della cache. Per eliminarli rapidamente, senza perdere la vista, voglio eliminare i file immagine mentre la mia istanza Ruby della class Image viene distrutta o entra nella Garbage Collection. Che ClassMethod devo sovrascrivere per alimentare il distruttore con il codice?

Perché il distruttore non è chiamato su eccezione?

Mi aspettavo che A::~A() venisse chiamato in questo programma, ma non lo è: #include struct A { ~A() { std::cout << "~A()" << std::endl; } }; void f() { A a; throw "spam"; } int main() { f(); } Tuttavia, se cambio l’ultima riga a int main() try { f(); } catch (…) { throw; […]

Il distruttore viene chiamato se SIGINT o SIGSTP sono stati emessi?

Ho una class con un distruttore definito dall’utente. Se la class è stata istanziata inizialmente, e quindi SIGINT viene emesso (usando CTRL + C in unix) mentre il programma è in esecuzione, verrà chiamato il distruttore? Qual è il comportamento di SIGSTP (CTRL + Z in unix)?

La chiamata pseudo-distruttore non distrugge un object

Considera il seguente codice: #include typedef int t; ta=42; int main() { at::~t(); std::cout << a; //42 } Mi aspetto che a sarà distrutto. Ma non è vero, perché? Come fa quella chiamata pseudo-distruttore a distruggere l’object?

Perché i contenitori STL non hanno distruttori virtuali?

Qualcuno sa perché i container STL non hanno distruttori virtuali? Per quanto ne so, gli unici benefici sono: riduce la dimensione di un’istanza di un puntatore (alla tabella del metodo virtuale) e rende la distruzione e la costruzione un po ‘più veloce. Il rovescio della medaglia è che non è sicuro creare una sottoclass dei […]