【问题标题】:How do i retain the data value of static variable despite the program restarting?尽管程序重新启动,我如何保留静态变量的数据值?
【发布时间】:2021-03-24 14:32:42
【问题描述】:

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

【问题讨论】:

  • 将值写入文件。启动时阅读。
  • 您需要某种方式将状态转储到持久存储(文件)中
  • 您可以将变量写入文件。然而,问题在于何时写入值,因为您试图缓解的是“意外”重启。
  • 一开始这些值是如何到达那里的?
  • 什么是unexpected 重启?程序是否关闭。如果它被程序控制流退出,你知道它什么时候退出。如果它因异常而终止,您需要一个异常处理程序。在这种情况下,编写可能会或可能不会起作用,因为此时程序可能会不稳定。您还可以在代码中的某些战略点写savepoint

标签: c++ c mql4 mql5


【解决方案1】:

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

我使用过的所有操作系统都支持内存映射文件,但具体情况可能因操作系统而异。

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      相关资源
      最近更新 更多