sbrk(0)并不总是返回相同的值

时间:2019-10-19 12:54:30

标签: c memory

我的任务是为伙伴分配算法的实现进行编码。我对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。似乎没有理由有时这些值仅匹配。谁能解释一下?

0 个答案:

没有答案