相关疑难解决方法(0)

malloc和free是如何实现的?

我想实现自己的动态内存管理系统,以添加有助于在C++中管理内存的新功能.

我使用Windows(XP)和Linux(Ubuntu).实现'malloc'和'free'等功能需要什么?我认为我必须使用最低级别的系统调用.

对于Windows,我找到了函数:GetProcessHeap,HeapAlloc,HeapCreate,HeapDestroy和HeapFree.

对于Linux,我没有找到任何系统调用堆管理.在Linux上,malloc和free是系统调用,不是吗?

谢谢

编辑:
C++不提供垃圾收集器和垃圾收集器很慢.有些分配很容易免费,但有些分配需要垃圾收集器.

我想实现这些函数并添加新功能:
*每当调用free()时,检查指针是否属于堆.
*帮助垃圾收集.我必须存储有关已分配块的一些信息.
*使用多个堆(Windows上的HeapCreate/HeapDestroy).我可以快速删除整个堆及其分配的块.

c++ dynamic-memory-allocation

12
推荐指数
2
解决办法
5694
查看次数

标签 统计

c++ ×1

dynamic-memory-allocation ×1