Memory 如何将C程序的内存状态保存到以后的jumpstart

Memory 如何将C程序的内存状态保存到以后的jumpstart,memory,save,state,Memory,Save,State,在一个大型复杂的C程序中,我想将静态变量、全局结构和动态分配变量所使用的所有内存的内容保存到一个文件中。这些内存变量超过10000个 C程序只有一个线程,没有文件操作,程序本身也不太复杂(计算很复杂) 然后,在程序的同一次执行中,我想从这个保存状态初始化内存 如果这是可能的,有人能提供一种方法来实现这一点吗?您必须定义一个结构来保存所有数据,然后必须实现一个函数来将其保存到文件中 大概是这样的: 然而,请注意,这个方法是最简单的,但是根本没有可移植性 注释后编辑:基本上,您要做的是保存程序中发生

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

C程序只有一个线程,没有文件操作,程序本身也不太复杂(计算很复杂)

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


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

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

大概是这样的:

然而,请注意,这个方法是最简单的,但是根本没有可移植性

注释后编辑:基本上,您要做的是保存程序中发生的任何事情,然后在加载后重新启动程序。我认为这不可能以任何简单的方式实现。您必须理解“应用程序状态”的含义。 想想看:转储内存不仅可以保存数据,还可以保存当前的指令指针。因此,使用该“哑”转储,您还可以保存当前正在运行的实际指令。还有很多你真的不想关心的问题

您考虑的最接近的事情是在虚拟机中运行程序。如果暂停虚拟机,执行状态将为“保存”,但无论何时重新启动虚拟机,程序都将在暂停时的执行点重新启动

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

谢谢你的回答。但我想知道的是如何定义一个结构来保存我的所有数据。我要保存的变量分散在数百个函数中。因此,我认为如果我可以保存和加载堆栈区域或堆区域内存,这可能会更容易,但我找不到解决方案。您当然可以尝试将堆栈和堆保存到文件中,但这不考虑静态/全局数据。