0

我正在尝试为特定的 HPC 应用程序构建检查点重启库。要执行检查点,我需要能够复制每个处理元素的全局和静态变量。我希望能够通过简单地抓取所有这些变量(已初始化和未初始化)存储的连续内​​存块并将其写入其他地方来做到这一点。

我已经彻底谷歌了,还没有想出任何东西。如果有任何帮助,我将不胜感激。任何有关解决此问题的更好方法的建议也非常受欢迎。

4

1 回答 1

2

根据您的编译器,这些可能在您的堆中或二进制文件的数据部分中。我对 C 标准不够熟悉,无法确切知道规范保证了分配过程的哪些方面,但是尝试转储这些内存部分并稍后从它们恢复听起来像是一种有很多隐藏陷阱的方法。更不用说可能浪费时间来获取未初始化的内存了。

我建议您改为将所需的内容明确转储为 JSON 等串行格式,并在重新启动时从这些二进制文件中恢复。设置和维护这个保存和恢复过程需要更多的努力,但我认为从长远来看,它比转储整个堆和数据部分更安全。

于 2018-07-07T00:35:54.370 回答