Da quel che vedo mi sembra che ci sia un errore.
esempio viene allocato semplicemente come un puntatore
a svm_example e non come array. L'allocazione dovrebbe essere così
Codice: Seleziona tutto
svm_example *esempio=new svm_example[the_set3->size()]
Per questo quando fai delete[] esempio ti dà errore.
Dal tuo codice non sembra però che esempio ti serva come
un vero e proprio array, forse potresti usarlo semplicemente
come puntatore semplice
Codice: Seleziona tutto
for(int j=0;j<the_set3->size();j++){
esempio=the_set3->get_example(j);
for(int i=0;i<dimPCA;i++){
vett_a(i)=esempio.example[i].att;
}
VecSet_a.Add(vett_a);
}
dipende dall'utilizzo che ne fai dopo.
Per quanto riguarda la deallocazione devi andare invece in ordine inverso.
Cioè prima deallochi gli example e poi esempio.
Codice: Seleziona tutto
for (j=0;j<;j++)
{
delete [] esempio[j].example;
}
delete[] esempio;
Per fugare ogni dubbio ti consiglio inoltre di usare Valgrind, che
è anche pacchettizzato su slacky. E' un programma che ti aiuta
a scovare tutti i memory leak in un programma.