我正在创建n大小的1d数组B和T,以及nxn大小的2D数组a,其中n已在前面计算过。
但是暂停后程序崩溃了,我可能做错什么了??

float *B = malloc(sizeof(int) * (n));
float *T = malloc(sizeof(int) * (n));
system("PAUSE");
float **A;
A = malloc(sizeof(int) * (n));
for(j = 0; j < n; j++)
{
    A[j] = malloc(sizeof(int) * (j));
}

i,j和n是整数。

最佳答案

千万不要将参数中的类型名重复到malloc();这样做很容易说出错误的类型,从而产生错误。
您应该使用sizeof,如下所示:

float *B = malloc(n * sizeof *B);
float **A = malloc(n * sizeof *A);
for(j = 0; j < n; ++j)
  A[j] = malloc(n * sizeof *A[j]);

同样,在Cyou shouldn't cast the return value of malloc()中。

09-30 15:33
查看更多