如果我想分配一个动态的内存部分,其大小未知或大小在运行时已知,例如,在用户输入他想要分配的兆字节数之后,最好的方法是什么去做?是从 C 调用“malloc”要求操作系统为我这样做吗?或者,还有更好的方法? 通常是如何完成的?
注意我不想保留
最佳答案
另一种方法是定义尽可能大的静态数组并编写您自己的malloc
/free
子例程。这很简单,尤其是在没有多线程或其他类型的分配 block 共享使用的情况下。您保留第一个空 block 的地址,并在每个 block 的开头存储 block 的大小和下一个空闲 block 的地址。
PS:分配(保留) block 也包含 block 大小作为前缀。下一个 block 的地址在这里没有使用,可以是 0 作为“保留”内存的标志。更简单的解决方案是只有 block 大小和标志 free/used_block 但这样你必须扫描多个保留 block 直到到达空闲 block ,这比只有空闲 block 的链慢。
关于linux - 在程序集中动态分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46843838/