View Full Version : [C] puntatore a struct il cui campo è doppio puntatore
Salve a tutti
non riesco a capire come mai questo codice vada in Segmentation fault :(
typedef struct culture_ {
char** matr;
} culture;
void main() {
culture *test;
test->matr = NULL;
}
Se faccio così
void main() {
culture test;
test.matr = NULL;
}
tutto funziona, ma ho bisogno di un puntatore struttura.. come si fa in questi casi?
Grazie!
Salve a tutti
non riesco a capire come mai questo codice vada in Segmentation fault :(
typedef struct culture_ {
char** matr;
} culture;
void main() {
culture *test;
test->matr = NULL;
}
Se faccio così
void main() {
culture test;
test.matr = NULL;
}
tutto funziona, ma ho bisogno di un puntatore struttura.. come si fa in questi casi?
Grazie!
Il problema non e' (per ora) il doppio puntatore.
Il problema e'... lo spazio allocato.
Quel puntatore a struttura, punta a cosa?
maulattu
27-11-2009, 18:46
Salve a tutti
non riesco a capire come mai questo codice vada in Segmentation fault :(
typedef struct culture_ {
char** matr;
} culture;
void main() {
culture *test;
test->matr = NULL;
}
Se faccio così
void main() {
culture test;
test.matr = NULL;
}
tutto funziona, ma ho bisogno di un puntatore struttura.. come si fa in questi casi?
Grazie!
come giustamente suggerito da gugoxx devi allocare una variabile di tipo struct culture *
test è un puntatore, ma non punta attualmente a nulla di valido
culture *test = (struct culture *) calloc(1, sizeof(struct culture));
if (NULL != test)
{
test->matr = NULL;
...
...
free(test);
}
avete ragionissima, ci vuole
test = (culture*) malloc( sizeof(culture*) );
in effetti era ovvio ma oggi sono abbastanza fuso :D
Grazie della dritta :)
maulattu
29-11-2009, 15:24
dopo la malloc fai un memset a 0, cvosì ripulisci l'intero contenuto del valore puntato.
o, se vuoi, vai di calloc
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.