c++ - 在 C++ 中存储运行时变量

标签 c++ memory

这是一个 C++ 问题。 我有一个对象跟踪程序,可以循环从 0,...,n 获取图像。在当前帧,计算基于之前的帧,因此我需要保存这些变量、矩阵等以备后用。该程序现在必须集成到另一个将提供图像的系统中,我必须返回跟踪输出。系统稍后执行其他进程,因此我的程序必须成为函数才能作为 DLL 分发。

我需要存储以前图像中的变量和矩阵,以便再次使用它们。我不知道最好的做法是将它们写入硬盘并在另一个实例中再次读取它们。如果是这种情况,写入/读取的最佳方式和数据类型/文件是什么。该系统的目标是实时。

谢谢

最佳答案

您可以研究的一个非线程安全的事情是将局部变量保持为 static。如果您不熟悉 C/C++ 静态变量,它们存储在全局内存空间中并在函数调用之间“记住”。它们就像全局变量,但只能由声明它们的函数访问。运行几次,看看会发生什么。

void foo()
{
  static int x=0;
  x++;
  cout << x << endl;
}

请记住,您不能让多个线程调用 foo,因为现在只有一个状态!

或者,您可以创建一个包含本地状态拷贝的结构并将其传入。

struct state
{
  int x
};

void bar(state& s)
{
  s.x++;
  cout << s.x << endl;
}

关于c++ - 在 C++ 中存储运行时变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3722173/

相关文章:

iphone - 解除分配当前/上一个 View Controller

c++ - 我究竟如何使用 beginInsertRows()?

C++。指向模板函数的函数指针产生 Unresolved 重载函数类型错误

c++ - 如何在不切片的情况下将多个派生类存储在 vector 中

caching - Memcache 与 Java 内存

java - java.awt.Image 对象使用的内存

c++ - 使用kinect计算 body 体积

c++ - VS2017下CMake项目使用Conan进行依赖管理

Windows 上的 Java 进程使用的内存少于 -xms 中指定的内存?

c++ - 将缓冲区与另一个缓冲区连接