|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Mar 2006
Messaggi: 29
|
Segmentation Fault con strutture in linguaggio C
Ciao a tutti ragazzi,
ho il seguente problema. Se scrivo il seguente programma con C: Codice: #include <stdio.h> main() { struct pap {int pippo; int pluto; union { long * integer; char * tizi; } val; }; struct pap *prova; struct pap pp; prova = &pp; // sono costretto ad inizializzarlo prova->pluto=45; *prova->val.integer=4; printf ("Valore= %d\n", prova->pluto); printf ("Valore= %ld\n", *prova->val.integer); return 0; } In linux lo compilo e riesco pure a far girare l'esegubile poi. nel seguente programma invece (che evolve dal precedente, ho scritto + a destra solo le righe che ho aggiunto): Codice: #include <stdio.h> main() { struct pap {int pippo; int pluto; union { long * integer; char * tizi; } val; }; struct pap *prova; struct pap pp; struct pap *prova2; struct pap pp2; prova = &pp; // sono costretto ad inizializzarlo prova->pluto=45; *prova->val.integer=4; printf ("Valore= %d\n", prova->pluto); printf ("Valore= %ld\n", *prova->val.integer); prova2 =&pp2; *prova2->val.integer=3; printf ("Valore= %ld\n", *prova2->val.integer); return 0; } In questo caso lo compilo sempre ma l'eseguibile va in Segmentation fault; che cosa sbaglio??? GRAZIE!!!! CIAO |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Mar 2006
Messaggi: 29
|
scusate ma nel secondo programma non si notano a destra le righe che ho aggiunto: ve le asterisco qui sotto
Codice: #include <stdio.h> main() { struct pap {int pippo; int pluto; union { long * integer; char * tizi; } val; }; struct pap *prova; struct pap pp; ****** struct pap *prova2; ****** struct pap pp2; prova = &pp; // sono costretto ad inizializzarlo prova->pluto=45; *prova->val.integer=4; printf ("Valore= %d\n", prova->pluto); printf ("Valore= %ld\n", *prova->val.integer); ****** prova2 =&pp2; ****** *prova2->val.integer=3; ******** printf ("Valore= %ld\n", *prova2->val.integer); return 0; } non capisco aggiungendo queste righe (che fanno la stessa cosa, sono identiche, a quello che fa i primo programma nelle altre righe poi...) che succede ... |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Mar 2006
Messaggi: 29
|
Lo ho provato a compilare sotto windows e funziona... Forse il compilatore? Cosa mi consigliate???
|
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
quando fai così:
Codice:
*prova->val.integer=4; |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7262
|
infatti non capisco come ti funziona su win... assegni il valore 4 a un puntatore a long... essendo un puntatore ci devi assegnare un indirizzo!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:48.



















