gpt4 book ai didi

c - 如何在 C 中编写一个简单的 malloc 函数

转载 作者:太空狗 更新时间:2023-10-29 12:06:43 31 4
gpt4 key购买 nike

作为操作系统中的一项作业,我们必须用 C 编程语言为 malloc 和 free 编写自己的代码,我知道如果我要求它的代码,我就没有学习的意义。我面临的问题是不知道在哪里包括用 50000 字节初始化 char 数组并使两个列表免费和使用。在我的函数中,我无法触发 malloc 或 free 自动发生。并且将使用第 3 方主程序来测试我的功能.....如果我的文件是 mymalloc.c 或者什么

    void* myalloc(size_t size)
{
//code for allocating memory
}
void myfree(void *ptr)
{
//code for free the memory
}

初始化内存空间和列表的代码会去哪里..

最佳答案

我将为您提供基本概念,您可以使用这些概念使用 C 编写自己的 malloc() 和 free() 函数代码。

  1. 假设我们有一个特定大小的连续内存块。这将是我们对内存的抽象感知,它将携带所有请求的内存分配以及用于保存有关这些分配 block 的数据的数据结构。

  2. 我们使用一个简单的链表来携带与已分配和空闲内存块相关的数据。

其结构如下。

struct block{
size_t size; /*Specifies the size of the block to which it refers*/
int free; /*This is the flag used to identify whether a block is free
or not*/
struct block *next; /*This points to the next metadata block*/
};
  1. 为此您需要 2 个源文件。一个是 mymalloc.h,它是包含初始化部分和我们将要实现的其余函数的函数原型(prototype)的头文件。另一个是 mymalloc.c 源文件,其中包含所有必要的函数实现。

  2. 需要有一个函数来初始化第一个空闲内存块。另一个功能是分割一 block 内存,它有足够的空间来满足请求的大小。另一种方法是扫描链表并合并任何连续的空闲 block ,以防止外部碎片。

注意:我们使用First-fit-algorithm来寻找空闲 block 来分配内存。

我认为这将帮助任何正在寻找一种使用 C 编写自己的 malloc 和自由函数的简单方法的人。请点击以下链接以获得详细说明。

http://tharikasblogs.blogspot.com/p/how-to-write-your-own-malloc-and-free.html

关于c - 如何在 C 中编写一个简单的 malloc 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9176516/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com