当我运行这个程序时,输出是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 字节,因为我正在为"b"动态分配 40 字节的空间吗?
No;它应该与 printf("%zu", sizeof(int *));
相同,无论您将什么值分配给b
,在您的实现上都是 4,因为b
具有类型 int *
而不是 int [10]
。