kod*_*dai 8 c malloc memory-management
我正在尝试编写像这样的大小函数:
size(void *p,int size);
Run Code Online (Sandbox Code Playgroud)
这将返回p指向的数组的大小.例如:
Int *a = malloc((sizeof(int)*100));
size(a,sizeof(int)); // this should return 100
Run Code Online (Sandbox Code Playgroud)
我认为这是可能的,因为如果我记得,malloc会跟踪在某些头字节中分配的空间.
这是我到目前为止所拥有的:
int size(void *p, int size)
{
p = (unsigned int *)p - 1;
unsigned int elements = (*(unsigned int *)p);
return elements/size;
}
Run Code Online (Sandbox Code Playgroud)
现在,假设分配的空间大小在指针之前的4个字节中,这应该返回字节或偏移量.这就是我在黑暗中的地方.我无法弄清楚malloc如何格式化这些头字节的细节.malloc如何打包标题位?
谢谢,我很感激.我确定这段代码有问题,而且它不是特别便携,可能与系统有关,但我这样做很有趣.