这是我的两个结构:
struct upset {
int location;
int trigger;
int type;
char bits[8];
};
struct event {
int category;
int spill;
int num_clock_ups;
int num_data_ups;
struct upset clock_ups[512];
struct upset data_ups[512];
};
但是当我尝试用这个进一步声明一个struct事件数组时:
int nevents = 1755;
struct event total_events[nevents];
我第一次尝试访问数组中的任何内容时,在使用gdb检查时,就在segfault sizeof(total_events)为0之前,并且total_events [1]和total_events [2]的位置差异是0x10,所以似乎结构翻转的数组没有初始化或其他东西。
我在初始化这个数组时做错了什么?我的结构设置不好吗?我对C语言中的结构非常新。
答案 0 :(得分:2)
您的进程堆栈空间是否足够大?通过我的计算,该数组将至少占用(忽略潜在的结构成员对齐填充):
[2*(13*512) + 4]*1755 = 22.3 MB
空间。如果total_events
是局部变量,它将在堆栈上分配。你有那么多的堆栈空间吗?