是否可以在一个 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程序中:
- 分配并声明一个 int 到内存中
5
的值
- 打印出变量的地址(eg:
0x7ffee6a98ad8
)
- 终止
然后在第二个 C 程序中,在第一个完全执行完后:
- 读入之前在地址
0x7ffee6a98ad8
声明的数据
- 打印
5
的正确值
这在 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
灾难。
我想知道是否可以在第一个C程序中:
- 分配并声明一个 int 到内存中
5
的值 - 打印出变量的地址(eg:
0x7ffee6a98ad8
) - 终止
然后在第二个 C 程序中,在第一个完全执行完后:
- 读入之前在地址
0x7ffee6a98ad8
声明的数据
- 打印
5
的正确值
这在 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
灾难。