小编nik*_*hev的帖子

如果二维数组的大小太大,则会出现分段错误

我在下面列出了代码。如果我定义ARR_SIZE太多(例如 820),则会出现分段错误错误。但是如果ARR_SIZE不是那么大(例如 320),代码就可以工作。

GDB仅在int main().

我认为问题出在二维数组的初始化阶段,但不确定。

#include "stdio.h"
#include "time.h"
#include "stdint.h"


#define ARR_SIZE 820
#define TICK(X) clock_t X = clock()
#define TOCK(X) printf("time %s: %g sec.\n", (#X), (double)(clock() - (X)) / CLOCKS_PER_SEC)

void copyji(int src[ARR_SIZE][ARR_SIZE], int dst[ARR_SIZE][ARR_SIZE]){
    int i, j;
    for (j = 0; j < ARR_SIZE; j++)
        for (i = 0; i < ARR_SIZE; i++)
            dst[i][j] = src[i][j];
}

void copyij(int src[ARR_SIZE][ARR_SIZE], int dst[ARR_SIZE][ARR_SIZE]){
    int i, j;
    for (i …
Run Code Online (Sandbox Code Playgroud)

c segmentation-fault multidimensional-array

2
推荐指数
1
解决办法
80
查看次数