繁体   English   中英

从程序内部复制C程序的整个bss和数据段?

[英]Copy the entire bss and data segments of a C program from within the program?

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

我已经对Google进行了彻底的搜索,没有提出任何建议。 我将非常感谢您的帮助。 任何解决此问题的更好方法的建议也都受到欢迎。

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

我建议您改为将所需的内容显式转储为JSON之类的串行格式,并在重新启动时从这些二进制文件中恢复。 建立和维护此保存和还原过程将花费更多的精力,但是从长远来看,这比转储整个堆和数据节更安全。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM