隐含的函数声明sbrk()

Jol*_*ger 1 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);
Run Code Online (Sandbox Code Playgroud)

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Ed *_*eal 5

添加行

#include <unistd.h>
Run Code Online (Sandbox Code Playgroud)

在文件'mymalloc.c'的顶部,以便声明该函数