我已经检查了我的代码是否正确地划分了内存空间,但是一旦我尝试将我的 2D 数组初始化为一些值然后对这些值求和,我就会收到一个 2x2 数组的分段错误。我想最终将我的代码扩展到一个更大的数组,但我什至无法让它在这里工作。我知道有很多关于 malloc 和 2D 数组的分段错误的帖子,但是由于我的 C 知识才刚刚开始,我一直无法找到可以帮助我解决问题的帖子。您可以提供的任何帮助,或者如果您可以指出我以前的问题,将不胜感激。谢谢!
#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);
}