次のコードを使用して配列を作成しています
float *A;
A = (float *) malloc(100*sizeof(float));
float *B;
B = (float *) malloc(100*sizeof(float));
しかし、これらの後に次のようにAとBのサイズのプリントを入力すると、100が表示されると予想される結果として2が得られます。
sizeof(A)/sizeof(float)
次のコードを使用して配列を作成しています
float *A;
A = (float *) malloc(100*sizeof(float));
float *B;
B = (float *) malloc(100*sizeof(float));
しかし、これらの後に次のようにAとBのサイズのプリントを入力すると、100が表示されると予想される結果として2が得られます。
sizeof(A)/sizeof(float)
あなたの期待は間違っています。A
はであるため、実際にどのように割り当てるかに関係なく、float*
そのサイズはになります。sizeof(float*)
静的配列がある場合、つまりfloat A[100]
、これは機能します。
これはC++なので、std::array
またはを使用しますstd::vector
。
最悪の場合、を使用しますnew[]
。絶対に使用しないでくださいmalloc
。
これは、現在のスコープで定義されている静的配列に対してのみ機能します。
あなたの例で得られるのは、ポインタのサイズをのfloat
サイズで割ったものだけですfloat
。