gpt4 book ai didi

c - Malloc 和 Void 指针

转载 作者:太空狗 更新时间:2023-10-29 17:19:18 25 4
gpt4 key购买 nike

我正在研究这个 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 func 为任何类型分配内存空间,如果有足够的内存,但我不明白的行是:

p = (void *)malloc_ptr;
malloc_ptr += size;

它怎么能指向任何这样的数据类型呢?我只是无法理解那个空指针或其位置。

注意:malloc_ptr 是一个 unsigned long

最佳答案

它返回空指针的原因是因为它不知道您在 malloc 调用中为什么分配空间。它只知道您请求的空间量。由您或您的编译器决定什么将填充内存。 void 指针的位置通常作为链表实现,以保持完整性并知道哪些内存值是空闲的,这令人惊讶地在 free 函数中进行跟踪。

关于c - Malloc 和 Void 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14033351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com