c++ - c++中内存的使用

标签 c++ arrays atmel

我不确定如何提出这个问题,但这里是:

  1. 当使用 C++ 在我的 Atmel MCU 上编程时,我倾向于在同一个数据存储器中混合“程序”变量和“用户”变量。这在时间上很麻烦,因为我想制作一些可以加载或保存的预设。而且我不想保存“程序”变量,因为程序将根据“用户”值生成正确的值。在内存中拆分它是常见的做法吗?例如。 PGM 内存中的定时器计数器,数据内存中的 thresholdByUser?

  2. 在我的程序中,我制作了几个不同的函数,它们都有自己的一组用户变量。 例如:设置有 5 个用户变量,生成器有 6 个用户变量等... 你会制作 1 个大数组,然后将 #define settingsgeneratorSpeed 1、#define settingsBacklight 2 作为位置,这样你就可以这样调用它们:Array[generatorSpeed]、Array[settingsBacklight] 还是您仍会将其拆分并使用 struct orso 收集它们?

在 STK500 上使用 ATMEGA644 开发 atmelstudio 4.0。

感谢您提供的所有帮助!

最佳答案

假设您使用的是 AT(X)Mega,当提到 Atmel MCU 时:IIRC 这取决于您使用的是哪个编译器套件。使用 gcc,如果你有类似 static int 的东西,它将转到 PGM,并在程序运行时复制到 RAM。因此,如果您希望您的变量不在 PGM 内存中,则必须使它们成为堆栈或堆变量。常量和静态变量将始终存在于两者中。如果您不想只有 PGM 常量,您可以指定它,但这需要特殊的读取操作。

关于c++ - c++中内存的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18483692/

相关文章:

c++ - Linux 上最快的截屏方法

ios - 索引超出范围发生在 searchBar

php - 在 PHP 中按键搜索多维数组

arrays - 反向过滤数组 Angular

c - 将参数传递给另一个 .c 文件

c - snprintf 无法按预期使用 avr-gcc

c++ - 无法从 glGetShaderInfoLog 检索错误消息

C++ 未定义的方法引用

c++ - 自动将 C 代码的转换元素移植到 C++