[英]Memory Pool Allocation
我目前正在为操作系统课程实现自己的内存池,并且想知道是否有任何方法可以搜索系统上的可用内存。
我想先用C / C ++进行编程,然后将其转移到我们选择的BCPL课程语言中。
我的目的是探查可用的堆内存,以找出可以安全使用和处理的内存量。 这样做容易吗,还是仅声明一个静态大小(例如10,000个字节)会更有效?
谢谢
既然您提到您在Windows上,那么听起来您想要的功能是GlobalMemoryStatusEx 。 具体来说,从文档中:
您可以使用GlobalMemoryStatusEx函数来确定您的应用程序可以分配多少内存,而不会严重影响其他应用程序。
之后,您只需调用malloc / HeapAlloc / VirtualAlloc即可获得一大块连续内存。
如果通过“实现内存池”表示您想要实现一个分配器,则大多数malloc()
都会调用VirtualAlloc()
来根据需要将更多的内存映射到进程中,因此您可能想要使用它。 如果您想实现一个操作系统,那么下一步将是重新实现VirtualAlloc()
,这实际上将涉及实现虚拟内存管理系统。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.