2016-05-25 5 views
0

このプログラムを実行すると、出力は4バイトになります。動的に割り当てられた変数サイズ

#include <stdio.h> 
#include <stdlib.h> 

int main(void) { 
    int *b; 
    b=(int*)malloc(10*sizeof(int)); 
    printf("%d",sizeof(b)); 
    return 0; 
} 

(私は、64ビットコンパイラを使用します)しかし、私は動的に「B」のためのスペースの40バイトを割り当てていますように、出力は40バイトではないでしょうか?

+3

**ポインタは配列ではありません**。 – haccks

+0

ポインタが配列ではありません。わかった。しかし、どのくらいのバイトがbに割り当てられているか分かりますか? –

+0

ポインタ自体のサイズを表示します。 (4バイト、32ビットですが、64ビットコンパイラについては確信していますか?)割り当てられたヒープ割り当てブロックのサイズを取得する方法はありません。 – HolyBlackCat

答えて

0

いいえ; bのタイプはであり、bに割り当てられている値にかかわらず、はint [10]ではないため、実装では4であるprintf("%zu", sizeof(int *));と同じである必要があります。

関連する問題