gpt4 book ai didi

c - Binary Buddies 实现问题

转载 作者:行者123 更新时间:2023-11-30 17:16:55 24 4
gpt4 key购买 nike

我已经阅读并理解了二进制伙伴内存分配方法背后的概念,并且我正在尝试将其应用到 C 语言中,但在真正开始之前,我有一些特定于实现的问题。

https://drive.google.com/file/d/0BxJX9LHXUU59OWZ6ZmhvV1lBX2M/view?usp=sharing- 这是作业规范的链接,我的问题与问题 5 有关。

该问题指定在分配器初始化时对 malloc 进行一次调用,并且必须使用从该调用获取的空间来服务所有内存请求。

  1. 很明显,当调用 get_memory() 时,指向该空间的初始指针必须以某种方式递增,并且新的指针将返回给调用进程。如何将指针增加特定的字节数?

  2. 我知道必须保留每个 block 大小的空闲列表,但我不确定这些将如何初始化和维护。空闲列表中到底存储了什么?内存指针?

如果以前有人问过这些问题,我深表歉意,我还没有找到相关问题来为我提供足够的清晰度来开始工作。

最佳答案

对于第一个问题,您只需像普通变量一样增加指针即可。

指针的值对应于它所指向的数据在内存中的地址。通过将其增加(例如 10),您实际上将 10 个字节进一步移入内存。

对于空闲列表,malloc() 根据分配的内存块创建一个结构体,其中包含内存块的地址、大小以及是否空闲等信息。

您的目标是创建这些结构,以便您可以跟踪使用 get_memory() 和 release_memory() 函数分配或释放的不同内存块的状态。

您可能还会发现这很有用:https://stackoverflow.com/a/1957125/4758798

关于c - Binary Buddies 实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29515728/

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