-1

次のバッファを作成しています。

char *buffer;
int buffer_size = 1024;
buffer = (char*) ( malloc(buffer_size * sizeof(char) );

それから私がするとき:

int actual_size = sizeof(buffer);
printf("Size: %d", actual_size);

それが印刷するものは次のとおりです。

size: 4

私はそれが 1024 であることを期待していますが、これはなぜですか?

4

3 に答える 3

3

これはそのようには機能しません

 sizeof(buffer);

bufferサイズが配列ではなくポインタである値を返します。次のような配列がある場合

 char szArray[100];

それから

 sizeof(szArray);

は配列であるため 100 を返しますszArrayが、ポインターは配列ではありません。

于 2012-11-15T18:54:58.737 に答える
0

文字のバッファへのポインタである変数bufferのサイズを出力するためです。char 配列へのポインターは、メモリ内で直接 4 バイトを重み付けします。そのため、1024 ではなく 4 が出力されます。

于 2012-11-15T18:58:17.143 に答える