c++ - 动态内存分配/利用未使用的内存

标签 c++ c memory-management

我要编写一个动态需要大量内存的应用程序。 大部分内存用于缓存目的,仅用于加速。 这些部分实际上可以按需释放。

不幸的是,如果内存不足,我的内核将终止进程。但它可以 简单地释放内存。所以我想要的与 linux 页面缓存非常相似 解释 here .是否有可能以方便的方式在用户空间中实现此类行为?

我正在考虑使用存储在具有内存映射文件 IO 的 ramfs/tmpfs 上的“缓存文件”来实现这样的缓存,但我敢肯定,有一种更舒适的方法。

提前致谢!

最佳答案

是的,这应该是可能的。大多数内核都有一个内存分配方法,进程在该方法中休眠直到它获得请求的内存。 (我使用过的所有内核都有)。如果您没有,这可能是实现一个的好时机。您可以查看 linux 中的 kmem 函数。 然而,这是一种被动的方式来做你所要求的。该过程将一直等待,直到其他人释放内存。 如果你想在没有内存时从你自己的进程地址空间释放内存,这可以从用户空间轻松完成。您需要保留已分配内存的日志,并在分配失败时按需释放不需要的内存。

关于c++ - 动态内存分配/利用未使用的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16641932/

相关文章:

c++ - 这是将字符串作为参数传递给函数的内存有效方法。?

c++ - 在 x86 应用程序中使用 x64 dll

c - OS X 中的多线程 C 程序比 Linux 慢得多

c - 打开文件时复制字符串时遇到问题

c - 对数组进行操作时出现非法指令

iphone - 内存管理,ARC - 什么是零?

用于图像分割的 C++ 库

c++ - for( ... ) 循环索引声明样式

delphi - 压缩并发送 TFDDataset 的数据后释放 Form 时的 AV

linux - 3.10 mark_bootmem()中的内核崩溃BUG()