内存池分配

时间:2017-03-09 19:32:59

标签: c++ winapi memory-management operating-system

我目前正在为操作系统课程实现我自己的内存池,并且想知道是否有任何方法可以在我的系统上搜索可用内存。

我想首先用C / C ++编程,然后将它转换为我们选择的BCPL课程语言。

我的目的是探测我可用的堆内存,以确定我可以安全使用多少内存并搞乱。这样做是否容易,或者只是声明一个静态大小(例如10,000字节)会更有效吗?

由于

1 个答案:

答案 0 :(得分:4)

既然你提到你在Windows上,听起来你想要的功能是GlobalMemoryStatusEx。具体来说,来自文档:

  

您可以使用GlobalMemoryStatusEx函数来确定应用程序可以分配多少内存,而不会严重影响其他应用程序。

之后你可以调用malloc / HeapAlloc / VirtualAlloc来获取一大块连续的内存来玩。

如果通过"实现内存池",你的意思是你想要实现一个分配器,那么大多数malloc()的实现会调用VirtualAlloc()来将更多的内存映射到进程中需要,所以你可能想玩那个。如果您想实现操作系统,那么下一步就是重新实现VirtualAlloc(),这实际上涉及实现虚拟内存管理系统。