我正在研究这个 malloc 函数,我可以使用一些帮助:
static void *malloc(int size)
{
void *p;
if (size < 0)
error("Malloc error");
if (!malloc_ptr)
malloc_ptr = free_mem_ptr;
malloc_ptr = (malloc_ptr + 3) & ~3; /* Align */
p = (void *)malloc_ptr;
malloc_ptr += size;
if (free_mem_end_ptr && malloc_ptr >= free_mem_end_ptr)
error("Out of memory");
malloc_count++;
return p;
}
我知道 malloc 函数为任何类型分配内存空间,如果有足够的内存,但我不明白的行是:
p = (void *)malloc_ptr;
malloc_ptr += size;
它怎么能指向任何这样的数据类型呢?我只是无法理解那个 void 指针或其位置。
注意: malloc_ptr 是一个无符号长整数