是否可以在一个 C 程序中 "create" 垃圾内存数据,然后从另一个 C 程序中读入相同的数据?

Is it possible to "create" garbage memory data in one C program, and then later read in that same data in from another C program?

我想知道是否可以在第一个C程序中:

  1. 分配并声明一个 int 到内存中 5 的值
  2. 打印出变量的地址(eg:0x7ffee6a98ad8)
  3. 终止

然后在第二个 C 程序中,在第一个完全执行完后:

  1. 读入之前在地址0x7ffee6a98ad8
  2. 声明的数据
  3. 打印 5
  4. 的正确值

这在 C 中有可能吗?

如果是这样,人们将如何完成这样的任务?

如果重要的话,我正在使用 Linux。

这曾经是可能的。如果你在 DOS 中编写了一个大型 C 程序并使用 malloc() 分配了一些 RAM,你实际上可以将该地址保存在某个地方(比如在磁盘上)并启动另一个 C 程序并读取该内存。

我听说它在深度嵌入式平台上仍然可行,但在现代多用户操作系统上,当您从 OS 分配 RAM 时,它会先清除 RAM,因此您看不到它。

问题编辑为Linux。嗯,不,但也是。用ptrace()打开shell进程,在shell进程中分配一些内存写入,下一个程序可以在那里找到。这一点都不像野指针游戏,而且真的很棘手。 https://techryptic.github.io/2018/04/07/Using-PTRACE-to-Inspect-&-Alter-Memory/ window 正在关闭;他们开始收紧事情,所以你不能调试任何进程,但你自己的子进程,因为他们不想 sudo 灾难。