【发布时间】:2020-08-19 22:56:09
【问题描述】:
我读到了:
sizeof 运算符返回数据类型的大小,而不是分配给变量的内存量。
分配的内存量不是取决于数据类型的大小吗?我的意思是当我将int 传递给sizeof 时,sizeof 将返回 4(architecture-dependent)。
我在这里遗漏了什么吗?
【问题讨论】:
-
int *foo = malloc(1000);之后分配的内存不由sizeof---sizeof foo == sizeof (int*)和sizeof *foo == sizeof (int)返回。另请注意,指针的大小不一定与int的大小相同(因为它似乎在您的实现中)。 -
你在哪里读到的?
-
@Niraj Raut 为对象分配的内存由其类型定义。
-
您引用的语句可能是在使用
malloc的上下文中做出的,而在char *x = malloc(n)之后,表达式sizeof(x)将不会返回n。但是当然sizeof(x)字节被分配来存储指针本身。 -
@pmg 您的示例没有意义,并且与 sizeof 运算符没有任何共同之处。