[C++] distruttori e memoria stack
Inviato: 01/02/2020, 14:24
Ciao!
prima di esprimere la mia perplessità scrivo un frammento di codice(funzione)
quando il programma esce dalla funzione vengono distrutte le variabili locali A,B
la memoria allocata, con la prima istruzione nella funzione, rimane tale anche dopo l'uscita dalla funzione.
domanda uno: il puntatore sum_Base viene distrutto lasciando intatto l'oggetto a cui punta?
domanda due: se al posto di passare A,B avessi passato &A e &B non appena il programma sarebbe uscito dall'ambito della funzione sarebbero stati distrutti gli oggetti A,B?
a tal proposito ho pensato che vengono distrutti solo gli elementi presenti sulla memoria stack e che quindi
1- il puntatore viene distrutto
2- gli oggetti A,B non vengono distrutti perchè non sono sullo stack.
prima di esprimere la mia perplessità scrivo un frammento di codice(funzione)
- Codice:
class Base{
int x;
};
Base& operator+(Base A,Base B){
Base* sum_Base{new Base};
sum_Base.x=A.x+B.x;
return *sum_Base;
}
quando il programma esce dalla funzione vengono distrutte le variabili locali A,B
la memoria allocata, con la prima istruzione nella funzione, rimane tale anche dopo l'uscita dalla funzione.
domanda uno: il puntatore sum_Base viene distrutto lasciando intatto l'oggetto a cui punta?
domanda due: se al posto di passare A,B avessi passato &A e &B non appena il programma sarebbe uscito dall'ambito della funzione sarebbero stati distrutti gli oggetti A,B?
a tal proposito ho pensato che vengono distrutti solo gli elementi presenti sulla memoria stack e che quindi
1- il puntatore viene distrutto
2- gli oggetti A,B non vengono distrutti perchè non sono sullo stack.