【发布时间】:2016-10-19 19:36:14
【问题描述】:
如果我分配:
int *d = malloc(5* sizeof(int));
printf("%d", (int) sizeof(d));
我得到的值是 8 而不是 5。我知道 sizeof() 在这种情况下并不意味着返回长度,但我想知道是否有解决方法,因为我想避免手动跟踪大小(通过参数传递)。
【问题讨论】:
-
d是一个指针,您正在获取它的大小。这就是为什么。 -
“如何使用 sizeof()...”。没有这样的“如何”。没有办法为此目的使用
sizeof。 -
sizeof不是函数,而是运算符。 -
你知道大小。你只是告诉它分配什么。但是您没有检查返回的指针不是
NULL。如果是,则分配了 0 个字节。否则,它会分配您请求的5* sizeof(int)字节。
标签: c