该查询与使用内存分配有关malloc
.
一般我们说的是malloc
从堆中分配内存。
现在说我有一个普通的嵌入式系统(没有操作系统),我在我做的地方加载了正常的程序malloc
在我的程序中。
在这种情况下,内存是从哪里分配的?
malloc() 是通常由运行时库实现的函数。你是对的,如果你在操作系统之上运行,那么 malloc 有时(但不是每次)会触发一个系统调用,使操作系统将一些内存映射到你的程序的地址空间中。
如果您的程序在没有操作系统的情况下运行,那么您可以将您的程序视为being操作系统。您可以访问所有地址,这意味着您只需将地址分配给指针,然后取消引用该指针以进行读/写。
当然,您必须确保程序的其他部分不使用相同的内存,因此您编写自己的内存管理器:
简而言之,您可以预留一系列地址,供您使用“内存管理器”用于存储哪些地址范围已在使用中(存储在其中的数据结构可以像链接列表一样简单,也可以复杂得多)。然后你将编写一个函数并调用它,例如malloc()它构成了内存管理器的功能部分。它查看提到的数据结构以查找与参数指定一样长的范围地址,并返回指向它的指针。
现在,如果程序中的每个函数都调用 malloc() 而不是随机写入自定义地址,那么您已经完成了第一步。你可以写一个free()- 函数将查找在提到的数据结构中给出的指针,并调整数据结构(在朴素链表中,它将合并两个链接)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)