c - 在 Linux 中使用 C 实现零 RAM

标签 c linux ram

出于安全目的,如何将 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/

相关文章:

c - 调试远程 C 应用程序

足够困难地学习的 C 环境

linux - 内核如何知道物理内存基址?

java - Apache VFS 内存中

c - 创建TCP服务器的三个问题——socket,Linux with C

python - Python C 扩展的 DLL 文件的兼容性

Python 将字节字符串直接打印到 Linux 上的打印机

java - 在 Linux/Java/Scala 中枚举附加的 DVD 驱动器

linux - 我可以通过远程安装 .X11-unix 来与 X 服务器通信吗?

memory - Apache Spark - 内存管理