所以我正在做某事,但遇到了很大的问题。在我的程序上,当我输入较小的数组大小时,我没有任何问题,并且程序运行正常(例如3x3)。当我用诸如6x6(i = 6,j = 6)之类的东西输入X数组时,我得到了这个错误,我真的不知道为什么...我试图从昨天开始解决它,但仍然一无所获:(任何人都可以帮我吗?如果有关系,我在计算机上使用的软件是ubuntu 18.04。我将感谢任何人都会为您提供帮助。
我的代码是这样的:
#include <stdlib.h>
int main(int argc, char *argv[])
{
int N,M; // N=megethos rows , M=megethos columns
int **X,**Y; // pinakas
int size,i,j,num;
int freqamount, sizeOfArray;
float freq;
printf("\n\nGive me the rows of the table: ");
scanf("%d",&N);
printf("\n\nGive me the columns: ");
scanf("%d",&M);
size = N*sizeof(int);
X = malloc(size);
size = M * sizeof(int);
for(i=0; i<M;i++){
X[i] =(int*)malloc(size);
}
Y = malloc(size);
for(i=0;i<3;i++){
Y[i] = (int*)malloc(3*sizeof(int));
}
printf("\n\nGive the number ");
scanf("%d",&num);
printf("\n\ngive the frequence");
scanf("%f",&freq);
sizeOfArray = N*M;
freqamount =(int) ((freq * sizeOfArray)/100);
printf("\nIt should appear: %d times\n",freqamount);
/*
if(freqamount == 100){
X[i][j] = num;
}
if(freqamount == 0){
x[i][j] != num;
}
X[i][j] = rand() % 100;
*/
for(i=0;i<N;i++){
for(j=0;j<M;j++){
X[i][j] = num;
}
}
for(i=0;i<N;i++){
for(j=0;j<3;j++){
if(j=0){
Y[i][j] = rand() % 100;
}
if (j=1){
Y[i][j] = i;
}
if(j=2){
Y[i][j] = j;
}
}
printf("%d\t",Y[i][j]);
}
for(i=0;i<N;i++){
free(X[i]);
}
free(X);
return 0;
}
答案 0 :(得分:0)
如果您查看带有符号的转储,并查看PC以查看在何处触发了转储,那么问题出在哪里就很明显了。您将需要考虑代码及其崩溃时的功能(程序计数器地址之前的行)。