在一个大型复杂的C程序中,我想将静态变量、全局结构和动态分配的变量使用的所有内存的内容保存到文件中。这些内存变量超过 10,000 个。
C程序只有单线程,没有文件操作,程序本身没有那么复杂(计算复杂)。
然后,在程序的同一执行中,我想从这个保存的状态初始化内存。
如果这可能的话,有人可以提供一种方法来实现这一点吗?
最佳答案
您必须定义一个结构来保存所有数据,然后必须实现一个函数将其保存到文件中。
类似这样的:Saving struct to file
但请注意,这种方法是最简单的,但根本不具备可移植性。
评论后编辑:基本上,您想要做的是保存程序中发生的任何事情,然后在加载后重新启动它。我认为这不可能以任何简单的方式实现。您必须了解“您的申请状态”的含义。 想想看:对内存进行转储不仅可以保存数据,还可以保存当前的指令指针。因此,通过该“哑”转储,您还可以保存当前正在运行的实际指令。还有更多您确实不想关心的并发症。
您正在考虑的最接近的事情是在虚拟机中运行程序。如果您暂停虚拟机,执行状态将被“保存”,但每当您重新启动虚拟机时,程序都会在您暂停它的完全相同的执行点重新启动。
如果配置分散在应用程序中,您仍然可以访问用于保存所有内容的全局结构。 但您仍然必须了解您的程序并确定您必须保存什么。没有捷径。
关于memory - 如何保存 C 程序的内存状态以便稍后启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19087381/