gpt4 book ai didi

无法在 C 中初始化大型二维数组

转载 作者:行者123 更新时间:2023-11-30 18:31:10 25 4
gpt4 key购买 nike

我从来没有使用过 C,现在我需要初始化一个大型二维数组来进行一些计算。

我收到错误Project1.exe 中 0x003717B7 处的首次机会异常:0xC00000FD:堆栈溢出(参数:0x00000000、0x00382000)。

这行就是原因,但只有当索引很大时,500 才是我必须使用的最高值。我可以初始化的最高索引是356。

double b[500][500];

我该如何编译这个?我是从 VS 2013 编译的。

我必须运行的代码:

#include <stdio.h>

main() {
#define ROWCOL 356

int i, j;

double column_sum[ROWCOL];
double b[ROWCOL][ROWCOL];

for (i = 0; i < ROWCOL; i++) {
column_sum[i] = 0;
for (j = 0; j < ROWCOL; j++) {
column_sum[i] += b[j][i];
}
}

printf("Press any key to close...\n");
getch();
}

最佳答案

尝试将其静态化,将存储从堆栈移动到全局存储:

static double b[ROWCOL][ROWCOL];

将定义移到 main 之外会执行类似的操作,但会将名称 b 引入文件命名空间。

您还可以尝试动态分配空间,存储将位于堆上:

double (*b)[ROWCOL] = malloc(sizeof(double) * ROWCOL * ROWCOL);
/* ... */
free(b);

关于无法在 C 中初始化大型二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25838602/

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