PDA

Visualizza la versione completa : [C++] Vettore di oggetti


dr.cervo
02-04-2009, 17:53
Salve a tutti,
sto realizzando un programma in C++ sotto linux con ambiente di sviluppo Qt Develop.
Ho realizzato un vettore all'interno del quale ci metto degli oggetti di tipo "bufferFrame" da me creati.
il vettore si chiama "frame_list" e ho creato una funzione write per scriverci.

Funzione di scrittura nel vettore:

//creo un nuovo oggetto buffer frame
bufferFrame* bf= new bufferFrame(img_frame,w,h);
// assegno i valori all'oggetto presente nel vector allocato in precedenza
// il vettore di dimensioni prefissate
frame_list[cur_write_pos].height=h;
frame_list[cur_write_pos].width=w;
frame_list[cur_write_pos].imageData=bf->imageData;

Quello che volevo sapere come liberare la memoria quando distruggo il vettore.
Avevo pensato ad una cosa del genere :
for (i=0; i<frame_list.count -1 ; i++){
frame_list[i].~bufferFrame();
}
Pu essere una soluzione?
Grazie

MacApp
02-04-2009, 19:21
Originariamente inviato da dr.cervo
Pu essere una soluzione?


No!

Se "frame_list" un vettore di oggetti di tipo "bufferFrame" (quindi NON di puntatori ad oggetti di tipo "bufferFrame"), il distruttore di ogni singolo oggetto viene chiamato alla distruzione (automatica o no che sia) del vettore "frame_list".

Ad esempio prova ed esegui il seguente:



#include <iostream>

class GTest{
public:
GTest (void){
std::cout << __PRETTY_FUNCTION__ << std::endl;

}

virtual ~GTest (void){
std::cout << __PRETTY_FUNCTION__ << std::endl;
}
};

int main (void){
GTest * aTestVector = new GTest [10];
delete [] aTestVector;

GTest aTestArray [10];
return 0;
}

Loading