我正在尝试编写一个可以打印指针变量大小的c程序,该变量指向malloc()分配的内存位置。
我使用的C版本是C99。
以下是我的代码:
#include<stdio.h>
int main()
{
int *temp;
temp=malloc(sizeof(int)*3);
printf("%d %d\n",sizeof(int),sizeof(temp));
return 0;
}
我得到的输出是:
sh-4.2 $ ./f1 4 8
根据代码,printf应为两个表达式打印相同的值。即12. sizeof(int)= 4。
由于我为temp分配了12个字节的内存,因此sizeof(temp)应返回12.但是,它返回值为8。
我想知道可能是什么原因?如果有人知道,请回答。
答案 0 :(得分:6)
sizeof不返回动态分配内存的大小,它只打印变量大小,8是临时指针变量的大小而不是temp中地址指向的内存大小