出于安全目的,如何将 Linux 中未使用的 RAM 归零?我编写了这个简单的 C 程序,但我不知道 malloc 调用的 RAM 是否会在下一个循环中重用,或者是否会使用新的 RAM。希望几分钟后整个 RAM 将被清零。
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *a = NULL; // declare variable
while(1) // infinite loop
{
a = malloc(524288); // half a MB
memset(a, 0, 524288); // zero
free(a); // free
sleep(1); // sleep for 1 second
}
}
最佳答案
Linux 已经有一个内核进程,它使用空闲周期将内存归零,因此它将有内存可供请求它的进程使用。
您的循环可能会也可能不会将不同的内存归零,具体取决于特定的 malloc
实现。如果您确实想编写一个像您所描述的那样的流程,请考虑直接使用 sbrk 以确保您在流程中循环内存。不过,我敢打赌,如果您检查一下,您会发现 sbrk
给您的每个字节都已经为零。
关于c - 在 Linux 中使用 C 实现零 RAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4892187/