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