我想知道使用calloc
在byte
中分配的缓冲区大小。通过在我的机器上测试以下内容:
double *buf = (double *) calloc(5, sizeof(double));
printf("%zu \n", sizeof(buf));
即使我只更改一个元素,结果仍为8。我的问题是:
- 这是否意味着我只能将8乘以5以获取缓冲区大小(我认为
sizeof
将返回40)? - 如何创建一个宏以返回缓冲区的大小(要检查的缓冲区可以是
char
、int
、double
或float
)?
free()
所需的信息。一个专用的大小字段并不是必要的,事实上,只有指向下一个块的指针可能更容易实现。当然,你可以实现自己的替代malloc()
,还提供一些sizeOfChunk()
函数,但那将是语言的扩展。而且,顺便说一句,这是毫无意义的,分配一个块的程序知道大小(它将其传递给分配函数)。 - user2371524