2016-05-25 71 views
0

當我運行這個程序時,輸出是4個字節。 (我用一個64位的編譯器)動態分配的變量大小

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

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

但是不應該輸出是40個字節,因爲我動態地分配40個字節的爲「B」的空間?

+3

**指針不是數組**。 – haccks

+0

指針不是數組。我明白了。但是有什麼辦法可以知道有多少字節分配給b? –

+0

它打印指針本身的大小。 (這是4個字節,32位,你確定是64位編譯器嗎?)一旦它被分配了,就沒有(可移植和標準的)方式來獲得堆分配塊的大小。 – HolyBlackCat

回答

0

否;它應該與printf("%zu", sizeof(int *));相同,無論您分配給b的值是多少,因爲b的類型爲int *,而不是int [10]