Je suis en train d'exécuter le code suivant (en gcc 4.3 sur fedora 11 i586):pointeur sur struct dans les struct imbriquées
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
struct s_smallstruct{
int smallstruct;
};
struct s_test2{
char * test2;
struct s_smallstruct* smallstruct;
};
struct s_test3{
char * test3;
struct s_smallstruct * smallstruct;
};
struct s_test1{
char * test1;
struct s_test2 * test2;
struct s_test3 * test3;
};
int main(){
struct s_test1 *test1 = (struct s_test1 *) malloc(sizeof test1);
test1->test2[0].smallstruct[0].smallstruct = 123;
int num = test1->test2[0].smallstruct[0].smallstruct;
// struct s_smallstruct * smallstruct = (struct s_smallstruct *) malloc(sizeof smallstruct);
// smallstruct[0].smallstruct =12;
// int num = smallstruct[0].smallstruct;
printf("%d\n" , num);
return EXIT_SUCCESS;
}
Mais je me suis un segfault à test1-> test2 [0]. smallstruct [0] .smallstruct = 123; . La partie commentée est en cours d'exécution sans erreur. Quelle est la raison de ce comportement. Je ne suis pas très compétent en C, donc j'apprécierais toute sorte d'aide.
Ce n'est pas une solution, mais il faut vérifier TOUJOURS * ALLOC !! –