首页 > 解决方案 > sbrk(0) 并不总是返回相同的值

问题描述

我的任务是编写伙伴分配算法的实现。我对 C 不是很满意,而且我对指针的理解也不是很好。我正在尝试使用以下代码编写自定义内存分配器:

当我第一次尝试分配内存时,我使用以下内容:

    head = sbrk(0);
    printf("%p\n",sbrk(0));
    sbrk(MAX_SIZE);
    head = malloc(sizeof(head) + size);
    head->free = false;
    head->data = malloc(size);
    head->size += size;
    head->next = (void*)sbrk(0);

MAX_SIZE 是给定的,head 是自定义结构。一开始它是未初始化的。由于某种原因,head->next 值和开头打印的 sbrk(0) 并不总是匹配。有时它们都等于相同的值,例如:0x7e357000,但有时我的 head->next 将采用更大的值,例如:0xffffffffa4d8b000。似乎没有理由为什么这些值有时只会匹配。谁能解释一下?

标签: cmemory

解决方案


推荐阅读