Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C++] Vettore di oggetti

    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

  2. #2

    Re: [C++] Vettore di oggetti

    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:

    Codice PHP:
    #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;


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.