隐含的函数声明sbrk()

时间:2017-12-25 07:42:34

标签: c

我正在尝试创建自己的malloc函数,但我还没有完成。这是我的代码的相关部分:

mymalloc.h

#pragma once

#include <stdlib.h>

typedef struct METADATA{
    struct METADATA *next;
    struct METADATA *prev;
    int free;
    size_t size;
}METADATA;

METADATA *metadata;

void *mm_malloc(size_t size);

mymalloc.c

#include "mm_alloc.h"
#include "stdlib.h"
#include "stdio.h"

void *mm_malloc(size_t size) {
    if(size == 0)
        return NULL;

    METADATA *tmp;
    long address;

    if(metadata == NULL){
        sbrk(sizeof(tmp));
        sbrk(size);
        address = sbrk(0);

        return (void *)address;
    }
}

sbrk(sizeof(tmp));的{​​{1}}部分,我得到mymalloc.c。我想要做的是为"Implicit declaration of function sbrk()"新区块创建一个位置,并为所需大小创建一个位置。我在哪里做错了?

1 个答案:

答案 0 :(得分:5)

添加行

#include <unistd.h>

在文件顶部&#39; mymalloc.c&#39;以便声明该函数