linux - 在程序集中动态分配内存?

标签 linux assembly memory-management

如果我想分配一个动态的内存部分,其大小未知或大小在运行时已知,例如,在用户输入他想要分配的兆字节数之后,最好的方法是什么去做?是从 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/

相关文章:

regex - 从文本文件中提取电子邮件

perl 文件中的正则表达式 cdata

assembly - 加载引导加载程序的第二阶段

c - 如何使用 mmap 在堆中分配内存?

c++ - 内存分配/释放错误(极小代码)

memory - 如何计算二级页表大小?

regex - 如何为 less 命令正确编写正则表达式模式

mysql - perl: 符号查找错误:/usr/local/lib/perl/5.10.1/auto/DBD/mysql/mysql.so: undefined symbol: mysql_init

c - 学习汇编——全部注释掉,需要生成伪代码

c - 仅使用现有代码执行任意代码