我想实现自己的动态内存管理系统,以便添加有助于在 C++ 中管理内存的新功能。
我使用 Windows (XP) 和 Linux (Ubuntu)。实现“malloc”和“free”等功能需要什么?我认为我必须使用最低级别的系统调用。
对于 Windows,我找到了以下函数:GetProcessHeap、HeapAlloc、HeapCreate、HeapDestroy 和 HeapFree。
对于 Linux,我没有发现任何用于堆管理的系统调用。在 Linux 上,malloc 和 free 是系统调用,不是吗?
谢谢
编辑:
C++ 不提供垃圾收集器,垃圾收集器很慢。有些分配很容易释放,但有些分配需要垃圾收集器。
我想实现这些功能并添加新功能:
* 每当调用 free() 时,检查指针是否属于堆。
*帮助垃圾收集。我必须存储一些关于分配块的信息。
* 使用多个堆(Windows 上的 HeapCreate/HeapDestroy)。我可以快速删除整个堆及其分配的块。