我正在尝试编写一个函数,以返回从二进制文件中读取的2D数组指针。虽然我没有编译错误,但当我尝试打印数组中的元素时,总是出现分段错误。这是我的代码:
double ** readArray(int rows, int cols)
{
int i;
double **myArray=malloc(rows*sizeof(double*));
if (myArray){
for (i=0; i < rows; i++)
{
myArray[i]=malloc(cols*sizeof(double));
}
}
FILE *data;
data=fopen("matrix.bin", "rb");
fread(myArray,sizeof(double),rows*cols,data);
return myArray;
}
int main ()
{
int cols = 7;
int rows = 15;
double **myArray=readArray(rows, cols);
printf("%f\n", myArray[1][0]);
return 0;
}
free()
释放你使用malloc()
动态分配的内存了。 - MichimyArray
不是一个连续的内存区域,每次分配都可能返回指向空闲空间的任何指针。请参见例如我以前的这个答案,了解数组和指向指针的“矩阵”之间的区别。 - Some programmer dude