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

时间:2013-09-30 06:02:01

标签: memory save state

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

像这样:Saving struct to file

但请注意,此方法最简单,但根本没有可移植性。

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

您最关心的是在虚拟机中运行程序。如果暂停VM,执行状态将被“保存”,但每当您重新启动VM时,程序将在您暂停的完全相同的执行点重新启动。

如果配置分散在应用程序中,您仍然可以访问用于保存所有内容的全局结构。 但是你仍然需要了解你的程序并确定你需要保存的内容。没有捷径可供选择。