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

时间:2015-01-31 03:37:46

标签: c malloc heap virtual-memory

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

void* p = malloc(WHATEVER_SIZE);

后来我想检查(可能是使用系统调用)该数据的哪些字节在物理内存中,以及需要发生多少页面交换以便检索不存在的数据。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

如果您使用的是Linux或类似系统,请尝试mincore系统调用。它为您提供了一个位向量,表示在一系列页面中,哪些是在呼叫时物理上驻留的页面。当然,这些信息可能会在您使用它时过时;除非页面被锁定,否则它本身就会受到TOCTOU种族的影响。