gpt4 book ai didi

c - 分段故障核心转储二维阵列

转载 作者:行者123 更新时间:2023-11-30 14:56:06 25 4
gpt4 key购买 nike

我正在尝试使用 gcc-4.9(也尝试过 5.4)在 linux 下编译 c 代码,但我遇到了段错误错误。

Program received signal SIGSEGV, Segmentation fault.
0x080492e6 in dot (p1=0x8d9e6c0 <permy>, p2=0x3d77ca7c) at autrq.h:135
135 j = p2[i];

这是存在问题的代码部分:

#define N 239
#define K 120

void dot(int p1[N], int p2[N]) {
int p3[N], i, j; //printf("\n debut dot ");

for (i = 0; i < N; i++){
p3[i] = p1[i];
}

for (i = 0; i < N; i++) {
j = p2[i];
if(j>=N){
printf("Too large\n");
}
else{

p1[i]=p3[j];
}
} //printf("\n fin dot ");
}

void GenAut(int permy[N]) {
int i, j, c, f;
//printf("\n debut GenAUT ");
int inf[K], mo[N], mi[N];

for (i = 0; i < N; i++){
permy[i] = i;
}

j = GenIdex(1, 100);

for (c = 0; c < j; c++) {
f = GenIdex(0, pos);
//printf("\n pos: %d et f %d ",pos,f);
dot(permy, automorf[f]);
}
}

automorf 是一个 n x n long 数组 (int automorf[n][n])

您能帮忙解决这个问题吗?

最佳答案

试试这个并查看输出 output

我们没有 p3[3]; 并尝试访问 make 错误或未定义的行为。

#include <stdio.h>
#define N 3

void dot(int p1[N], int p2[N]) {
int p3[N], i, j; //printf("\n debut dot ");

for (i = 0; i < N; i++){
p3[i] = p1[i];
}

for (i = 0; i < N; i++) {
printf("i:%d p3[i]%d\n", i,p3[i]) ;
}

printf("\n") ;


for (i = 0; i < N; i++) {

j = p2[i];

printf("i:%d j:%d p3[%d]:%d\n", i, j, j, p3[j]) ;

p1[i]=p3[j];

}

//printf("\n fin dot ");
}


int
main(){

int x[N]={10,20,30};
int y[N]={1,2,3};

dot(x, y);


printf("\n");
return 0;
}

关于c - 分段故障核心转储二维阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44957792/

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