|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2004
Città: Torino
Messaggi: 3236
|
[C] puntatore a struct il cui campo è doppio puntatore
Salve a tutti
non riesco a capire come mai questo codice vada in Segmentation fault Codice:
typedef struct culture_ {
char** matr;
} culture;
void main() {
culture *test;
test->matr = NULL;
}
Codice:
void main() {
culture test;
test.matr = NULL;
}
Grazie! |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Il problema e'... lo spazio allocato. Quel puntatore a struttura, punta a cosa?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
|
Quote:
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); }
__________________
Ciao ciao cagnolino Billy MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen. XBOX Live GamerTag: InsaneMau |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2004
Città: Torino
Messaggi: 3236
|
avete ragionissima, ci vuole
Codice:
test = (culture*) malloc( sizeof(culture*) ); Grazie della dritta Ultima modifica di dvd100 : 27-11-2009 alle 20:53. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
|
dopo la malloc fai un memset a 0, cvosì ripulisci l'intero contenuto del valore puntato.
o, se vuoi, vai di calloc
__________________
Ciao ciao cagnolino Billy MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen. XBOX Live GamerTag: InsaneMau |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:47.




















