正如您所说,基本上许多 C/C++ 中的嵌入式应用程序使用不同的方法来获取您定义的动态内存。
我认为它基本上是为了减少内存和正确使用而完成的。
如果您尝试了解 malloc() 或 calloc() 函数如何在 c 中用于动态内存分配,那么您肯定会得到答案。我可以解释一下...
它(malloc)真正做的是维护一个空闲内存的链表。但最初,空闲列表是空的。当第一个 malloc() 被调用时,我们调用 sbrk() 来为空闲列表获取一块新的内存。这块内存被分割,一部分归还给用户,剩下的回到空闲链表。会有一个全局变量 malloc_head,它是空闲链表的头部。当 malloc() 被调用时,它会在它的列表中寻找一块足够大的内存。如果它找到一个,那么它将从链表中删除该内存并将其返回给用户。当调用 free() 时,内存被放回链表中。现在,为了提高效率,如果空闲列表上有一块比请求大得多的内存,然后它将该块分成两块——一个是请求的大小(填充为 8 的倍数),其余的。其余的放在空闲列表上,请求大小的一个返回给用户。
有关详细信息,请尝试参考http://web.eecs.utk.edu/~huangj/cs360/360/notes/Malloc2/lecture.html
http://web.eecs.utk.edu/~huangj/cs360/360 /notes/Malloc1/lecture.html
问题1->现在对于您的第一个问题,优势可能是以更有效的方式节省内存和分配,这取决于正在实施其方式的项目。
问题2->我还没有在 c 中看到任何内置库或 API 这样做。
问题3->要实现您自己的 API,您需要参考给定的 C 链接和 R&K 书。这本书解释得更详细。