【发布时间】:2019-03-12 03:47:02
【问题描述】:
我正在尝试创建一个二维数组,其中每个元素都指向一个结构来存储来自 CSV 文件的值。我不确定我是在创建结构还是定义二维数组。
下面是我的结构以及我如何分配内存。总会有 35 列,但行可能会变得非常大。当我使用 int test =29000(或 29000 行)运行它时,它可以工作并将所有值存储在我可以通过[row][col] 访问的二维数组中。当我用大于 29000 的任何东西分配测试时,它甚至没有进入内存的分配,它只是在struct node* arrayofnodes[test][35]; 处出现段错误。
我很困惑为什么它适用于 29000 但不适用于 30000。另外,如果有人对如何在一行上 malloc 数组而不是进入 2 for 循环有任何建议,我会很高兴学习。我也想知道我是否应该在这里使用typedef struct。
谢谢
struct node {
char* value;
};
int test=30000;
struct node* arrayofnodes[test][35];
for (int p=0; p < test; p++){
for (int j=0; j < 35; j++){
arrayofnodes[p][j] = malloc(sizeof(arrayofnodes));
}
}//this works and i can access a certain element by arrayofnodes[row][col].value;
【问题讨论】:
-
注意:
sizeof(arrayofnodes)是test * 35指针的大小 - 代码分配了test * 35次。 -
@Antii Haapala,标记为重复的帖子还没有回答这个问题。如果您愿意,请重新打开该问题,以便我可以添加一些额外的见解来帮助解决它。谢谢。
标签: c multidimensional-array struct