0

nサイズの1次元配列BとT、およびn×nサイズの2次元配列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 は整数です。

4

2 に答える 2

3

nxn サイズの 2D 配列 A

に間違った型を渡していますsizeof。と を使用する必要がsizeof(float)ありsizeof(float *)ます。しかし、より深刻な (そして陰湿な) 問題は次のとおりです。

A[j]=(float*)malloc(sizeof(int)*(j));
                                 ^

代わりnj.

于 2012-08-29T07:52:07.853 に答える
1

への引数で型名を繰り返さないでください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]);

また、Cでは の戻り値をキャストしないでくださいmalloc()

于 2012-08-29T07:55:11.197 に答える