我目前正在为操作系统类(class)实现我自己的内存池,我想知道是否有任何方法可以在我的系统上搜索可用内存。
我想先用 C/C++ 编写程序,然后将其转换为我们选择的类(class)语言 BCPL。
我的目的是探测我的可用堆内存,以确定我可以安全使用和乱用的内存量。这样做是否容易,还是仅声明静态大小(例如 10,000 字节)会更有效?
谢谢
最佳答案
既然你提到你在 Windows 上,听起来你想要的功能是 GlobalMemoryStatusEx .具体来说,来自文档:
You can use the GlobalMemoryStatusEx function to determine how much memory your application can allocate without severely impacting other applications.
之后,您只需调用 malloc/HeapAlloc/VirtualAlloc 即可获得一大块连续内存。
如果通过“实现一个内存池”,你的意思是你想要实现一个分配器,那么大多数 malloc()
的实现都会调用 VirtualAlloc()
来映射更多根据需要将内存添加到进程中,因此您可能想要使用它。如果您想实现一个操作系统,那么下一步就是重新实现 VirtualAlloc()
,这实际上涉及实现一个虚拟内存管理系统。
关于c++ - 内存池分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42703929/