Я проверил, что мой код правильно вырезает пространство памяти, но как только я пытаюсь инициализировать свой 2D-массив некоторыми значениями, а затем суммировать значения, я получаю ошибку сегментации только на массив 2x2. Я хотел бы в конечном итоге масштабировать мой код до гораздо большего массива, но я даже не могу заставить его работать здесь. Я знаю, что есть много сообщений о недостатке сегментации в массивах malloc и 2D, но я не смог найти тот, который помогает мне с моими проблемами, поскольку мои знания C только начинаются. Любая помощь, которую вы можете дать, или если вы можете указать мне на предыдущий вопрос, будем очень благодарны. Спасибо!Ошибка сегментации при инициализации 2D-массива
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main()
{
double sum=0;
int i,j;
int N = 2;
double **array;
array = malloc(N * sizeof(double *));
if(array == NULL) printf("Failure to allocate memory.\n");
for(i=0; i<=N; i++)
{
array[i] = malloc(N * sizeof(double));
if(array[i] == NULL) {
printf("Failed to allocate memory for arr[%d].\n", i);
exit(0);
}
}
for(i=0; i<=N; i++)
{
for(j=0; j<=N; j++)
{
array[i][j] = 1.0/(i+j);
sum = sum + array[i][j];
}
}
return(0);
}
Как правило: когда вы видите пальцы типа '<=' or '> =' в C, по крайней мере, подумайте дважды, что вы просто пытаетесь выразить. – alk