1

これらは私の2つの構造体です:

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

配列内の何かに初めてアクセスしようとすると、segfault sizeof(total_events)が0で、total_events[1]とtotal_events[2]の位置の差が0x10になる直前に、gdbで確認するとsegfaultが発生します。構造体の混乱の配列が初期化されていないようです。

この配列を初期化する際に何を間違えましたか?構造体の設定が不十分ですか?私はCの構造体と一般的に非常に新しいです。

4

1 に答える 1

2

プロセススタックスペースは十分に大きいですか?私の計算によると、その配列は少なくとも(潜在的な構造体メンバーの配置パディングを無視して)占めることになります:

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

スペースの。がローカル変数の場合total_events、スタックに割り当てられます。そんなにたくさんのスタックスペースがありますか?

于 2012-05-11T01:13:50.577 に答える