gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:54 26 4
gpt4 key购买 nike

这是我的两个结构:

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 和一般的结构方面非常新。

最佳答案

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

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

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

关于c - 包含 2 个结构数组的结构数组未正确初始化,导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10544125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com