PDA

View Full Version : [C++] problema distruttori


giulioballio
24-07-2007, 10:23
sto usando i vettori std di C++, tuttavia voglio evitare che sia chiamato un costruttore di copia quando inserisco un elemento nel vettore tramite push_back(), pertanto ho costruito dei vettori di puntatori come:

std::vector<Type1*> v1;
std::vector<Type2*> v2;
std::vector<Type3*> v3;

for( int i = 0; i < v1.size(); i++ )
{
Type1 *v1_obj = new Type1(args);
v1.push_back( v1_obj );
Type2 *v2_obj = new Type2(args);
v2.push_back( v2_obj );
Type3 *v3_obj = new Type3(args);
v3.push_back( v3_obj );
}

tuttavia quando i distruttori vengono chiamati o tento di costruire un distruttore come:

for( int i = 0; i < v1.size(); i++ )
{
delete [] v1[i];
delete [] v2[i];
delete [] v3[i];
}

ottengo tanti bei Segmentation Fault.. sto facendo qualcosa di non molto ortodosso?

Ufo13
24-07-2007, 11:42
I puntatori sono puntatori ad array o ad oggetti?

Se crei un oggetto con operatore new[] devi cancellarlo con delete[] altrimenti devi usare delete senza [].

Edit: Ho riguardato la cosa in pausa pranzo, devi usare delete e non delete[]...

giulioballio
24-07-2007, 20:13
I puntatori sono puntatori ad array o ad oggetti?

Se crei un oggetto con operatore new[] devi cancellarlo con delete[] altrimenti devi usare delete senza [].

Edit: Ho riguardato la cosa in pausa pranzo, devi usare delete e non delete[]...

grazie mille funziona!