memory - 如何保存 C 程序的内存状态以便稍后启动

标签 memory save state

在一个大型复杂的C程序中,我想将静态变量、全局结构和动态分配的变量使用的所有内存的内容保存到文件中。这些内存变量超过 10,000 个。

C程序只有单线程,没有文件操作,程序本身没有那么复杂(计算复杂)。

然后,在程序的同一执行中,我想从这个保存的状态初始化内存。

如果这可能的话,有人可以提供一种方法来实现这一点吗?

最佳答案

您必须定义一个结构来保存所有数据,然后必须实现一个函数将其保存到文件中。

类似这样的:Saving struct to file

但请注意,这种方法是最简单的,但根本不具备可移植性。

评论后编辑:基本上,您想要做的是保存程序中发生的任何事情,然后在加载后重新启动它。我认为这不可能以任何简单的方式实现。您必须了解“您的申请状态”的含义。 想想看:对内存进行转储不仅可以保存数据,还可以保存当前的指令指针。因此,通过该“哑”转储,您还可以保存当前正在运行的实际指令。还有更多您确实不想关心的并发症。

您正在考虑的最接近的事情是在虚拟机中运行程序。如果您暂停虚拟机,执行状态将被“保存”,但每当您重新启动虚拟机时,程序都会在您暂停它的完全相同的执行点重新启动。

如果配置分散在应用程序中,您仍然可以访问用于保存所有内容的全局结构。 但您仍然必须了解您的程序并确定您必须保存什么。没有捷径。

关于memory - 如何保存 C 程序的内存状态以便稍后启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19087381/

相关文章:

c - C如何在内存中存储不同的数据类型?

caching - 为什么英特尔使用虚拟索引物理标记缓存而不是 VIVT 或 PIPT?

php - 如何使用 php 裁剪选定的图像并将裁剪后的图像保存到文件夹中

javascript - 设置状态后设置状态

java - 如何减少java堆大小?

java - 对象内部的静态对象引用被复制吗?

java - 如何在 libgdx 中创建一个新文件?

vba - 保存时使用 VBA 错误的 CSV 文件转换器

复杂应用程序的 IOS 保存状态

flutter - 了解使用特定 ID 进行 Getx 状态更新如何与 SetState((){}) 配合使用