【发布时间】:2011-12-19 20:44:05
【问题描述】:
我有一个跨越几十个文件的 C 程序。我的目标是编写一个函数,在调用时会将所有全局变量保存到某个文件并退出到操作系统(Windows 中的命令行)。稍后,我需要程序从文件中加载全局变量并继续运行。
该程序是一个不加载任何 DLL 的单线程 exe。
解决这个问题的直接方法是列出所有全局变量(假设我会将静态变量转换为全局变量)并将它们转储到文件中。但这是一项乏味的工作,因为可能有数百甚至数千个变量。
还有其他方法吗,比如转储整个数据段并稍后加载?即使我保存了数据段并设法将其加载回 RAM,我也很难将程序变量与数据段的内存块相关联。
【问题讨论】:
-
你的程序有上千个全局变量?!如果你真的对设计有那么大的热情,那么不妨看看 Emacs 对
unexec做了什么。 -
在 Unix 上,一种方法是
mmap某个文件并在 mmapped 文件中分配所需的状态。 -
@AlexandreC.: Windows 有类似的东西吗?
-
MapViewOfFile 但是(缺乏对其他约束的了解)这是错误问题的糟糕解决方案。