c++ - 内存池分配

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

我目前正在为操作系统类(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/

相关文章:

iphone - iOS:防止系统发送低内存警告时卸载后台定位服务

c++ - 缩短字符串时 std::string::resize 和 std::string::erase 之间的区别

c++ - GDI+闪烁

某些特定用例的 C++ 原子内存排序

c++ - 为什么我没有收到 WM_MENUCHAR 消息?

delphi - Delphi中如何调用CreateProcess?

c - 内存分配的递归

iphone - 解释 alloc/init 发生两次

c++ - 无法访问注册表项

c++ - 为什么我的 const ref 无效?