包含2个结构数组的struct数组未正确初始化,导致段错误

时间:2012-05-11 01:07:57

标签: c arrays struct

这是我的两个结构:

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语言中的结构非常新。

1 个答案:

答案 0 :(得分:2)

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

[2*(13*512) + 4]*1755 = 22.3 MB
空间。如果total_events是局部变量,它将在堆栈上分配。你有那么多的堆栈空间吗?