尽管程序重新启动,我如何保留静态变量的数据值?

问题描述

我的几个函数上有一个静态变量,当程序意外重启时,我如何保留这些静态变量的值?

解决方法

在标准 C++ 中没有办法做到这一点。但是,有一种方法可以使用特定于操作系统的工具来实现,而且大多数情况下,最好的工具是由永久存储支持的内存 - 内存映射文件。

我使用过的所有操作系统都支持内存映射文件,尽管操作系统之间的细节可能有所不同。

不幸的是,使用传统文件来存储这样的变量非常不方便,因为每次更改它时都必须显式保存该值,并确保刷新缓冲区 - 否则您无法保证该值在不正常退出后保留 - 这将对性能非常不利。

,

如果您使用 MQL4 或 MQL5(我假设您是通过帖子上的标签),只需使用 GlobalVariables。

MQL4:https://book.mql4.com/variables/globals

MQL5:https://www.mql5.com/en/docs/globals