c - 如何检查数据是否仍在内存中

标签 c malloc heap-memory virtual-memory

假设我分配了一些任意大小的内存

void* p = malloc(WHATEVER_SIZE);

稍后我想检查(可能使用系统调用)该数据的哪些字节在物理内存中,以及需要发生多少页交换才能检索不在物理内存中的字节。有办法吗?

最佳答案

如果您使用的是 Linux 或类似系统,请尝试 mincore系统调用。它为您提供一个位 vector ,代表一系列页面,哪些页面在调用时物理驻留。当然,这些信息在您使用时可能已经过时;它本质上受制于 TOCTOU除非页面被锁定,否则比赛。

关于c - 如何检查数据是否仍在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28247897/

相关文章:

c - 如何在 LINUX 中过滤 RAW 套接字中的数据包

python - 在 Python 和 Perl 上绑定(bind) C 库但相反

c - 如何在C中跟踪动态内存的大小

kernel - 程序栈和堆,它们是如何工作的?

c - c中静态函数的范围

c++ - 为什么malloc不能在FreeBSD-x64内核空间分配大内存?

c - 带有 icd 指针的 C 代码中的 Valgrind 错误

c++ - 为什么在重新分配小块内存时分配大块内存失败

java - MetaMap java.lang.OutOfMemoryError : Java heap space

Python C API : Call a Python function with argument(s) passed by reference