隐含的函数声明sbrk()

问题描述 投票:1回答:1

我正在尝试创建自己的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));mymalloc.c部分,我得到了"Implicit declaration of function sbrk()"。我想要做的就是为新街区的metadata创建一个地方,也是一个所需大小的地方。我哪里做错了?

c
1个回答
5
投票

添加行

#include <unistd.h>

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

© www.soinside.com 2019 - 2024. All rights reserved.