View Single Post
Old 04-04-2011, 10:55   #6
Barbalbero
Registered User
 
Iscritto dal: Aug 2006
Messaggi: 305
ok ho provato un nuovo codice:
Codice:
    struttura->tab->nrows = dim;
    struttura->tab->ncols = 2 * dim + 3;
    struttura->tab->matrix = (mpf_t **) malloc(struttura->tab->nrows * sizeof (mpf_t *));

    for (int i = 0; i < struttura->tab->ncols; i++) {
        struttura->tab->matrix[i] = (mpf_t *) malloc(struttura->tab->ncols * sizeof (mpf_t));
    }

    for (int i = 0; i < struttura->tab->ncols; i++) {
            free(struttura->tab->matrix[i]);
     }
tab è una struct all'interno della struct struttura
In tab c'è un array bidimensionale matrix con le relative dimensioni.
in pratica ho provato a deallocare subito dopo aver allocato lo spazio, per vedere se era colpa di qualche operazione intermedia.
Il problema persiste.

Quote:
scrivi in C++, usa le caratteristiche del C++; new e delete in vece rispettivamente di malloc (o calloc) e free, e non mischiare assolutamente le cose.
ok ma perché? in università mi hanno sempre sconsigliato di usare la new e advanced linux programming preferisce usare la malloc. Se c'è un buon motivo per cui non dovrei utilizzare la malloc in c++ la smetto immediatamente.

Quote:
@Barbalbero: potresti usare Valgrind per scoprire il problema.
Anche ieri ho trovato su un forum che consigliavano di utilizzare valgrind, ma essendo un debugger non credo che potrà aiutarmi. Però ora lo installo e se non è troppo complicato vedo se può essermi d'aiuto.

Secondo me il problema comunque è molto banale, guardate il codice nuovo. Sono 4 righe di codice, evidentemente faccio qualcosa di non permesso, non lo so, per esempio mettere un array in una struttura dentro un'altra struttura, non ne ho idea
Barbalbero è offline   Rispondi citando il messaggio o parte di esso