1

这是我的两个结构:

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];
  };

但是当我尝试用这个进一步声明一个结构事件数组时:

int nevents = 1755;
struct event total_events[nevents];

我第一次尝试访问数组中的任何内容时遇到段错误,在使用 gdb 检查时,就在段错误 sizeof(total_events) 为 0 并且 total_events[1] 和 total_events[2] 的位置差为 0x10 之前,所以似乎结构不安的数组没有被初始化或其他东西。

我在初始化这个数组时做错了什么?我的结构设置不好吗?我对 C 和一般结构中的结构非常陌生。

4

1 回答 1

2

您的进程堆栈空间是否足够大?根据我的计算,数组将至少占用(忽略潜在的结构成员对齐填充):

[2*(13*512) + 4]*1755 = 22.3 MB

的空间。如果total_events是局部变量,它将被分配到堆栈上。你有那么多堆栈空间吗?

于 2012-05-11T01:13:50.577 回答