C 函数sbrk()的隐式声明
我正在尝试创建自己的malloc函数,但还没有完成。以下是我的代码的相关部分:C 函数sbrk()的隐式声明,c,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_mallo
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);
在sbrk中(sizeof(tmp))作为mymalloc.c的一部分,我得到了函数sbrk()的隐式声明。我想做的是为新块的元数据
创建一个位置,同时为所需大小创建一个位置。我哪里做错了?添加行
#include <unistd.h>
#包括
在文件“mymalloc.c”的顶部,以便声明函数添加行
#include <unistd.h>
#包括
在文件“mymalloc.c”的顶部,根据man sbrk
声明函数,其声明位于unistd.h.sbrk
现在已经过时。使用并研究一些C标准库(如或…)中现有的malloc
s的实现。我错过了这一部分,很抱歉这个愚蠢的问题。谢谢,@BasileStarynkevitch实际上这是我的家庭作业,所以我需要使用sbrk()。不过还是要谢谢你,我也会看看。根据你的环境/版本/…,你可能还需要定义一个功能测试宏来删除sbrk
警告。将#define _GNU_SOURCE
添加到文件顶部将删除警告。这包括了比您实际需要的更多的sbrk,因此请查看unistd.h以查看sbrk
所需的特定设置。根据man sbrk
,其声明位于unistd.h。sbrk
现在已经过时。使用并研究一些C标准库(如或…)中现有的malloc
s的实现。我错过了这一部分,很抱歉这个愚蠢的问题。谢谢,@BasileStarynkevitch实际上这是我的家庭作业,所以我需要使用sbrk()。不过还是要谢谢你,我也会看看。根据你的环境/版本/…,你可能还需要定义一个功能测试宏来删除sbrk
警告。将#define _GNU_SOURCE
添加到文件顶部将删除警告。这包括了sbrk实际需要的更多内容,因此请查看unistd.h以查看sbrk
所需的特定设置。