【发布时间】:2010-11-14 05:05:51
【问题描述】:
我正在尝试运行以下代码(在 fedora 11 i586 上的 gcc 4.3 中):
#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;
}
但我在 test1->test2[0].smallstruct[0].smallstruct = 123; .注释部分正在运行而没有错误。这种行为的原因是什么。我对 C 不是很精通,所以我会很感激任何帮助。
【问题讨论】:
-
这不是解决方案,但始终检查 *ALLOC!!