この例を参照してください。
int main( int argc, char ** argv )
{
int *ptr = malloc(100 * sizeof (int));
printf("sizeof(array) is %d bytes\n", sizeof(ptr));
}
printf 関数は 4 バイトしか返しません! なにが問題ですか?
本当にありがとう!!!
何も問題はありません。プラットフォーム上のポインターのサイズを求め、取得しています。
一般に、ポインタが指すメモリ ブロックのサイズを取得することはできません。後で必要になった場合は、自分で覚えておく必要があります。
一部のプラットフォームでは、malloc/calloc/strdup によって割り当てられた領域のサイズを返す「msize」関数があります。しかし、これは標準ではありません。
これは、32 ビット プラットフォーム上の任意のポインターのサイズです。