我正在使用资源有限的嵌入式平台进行编程。 (我有512Kb的闪存和80Kb的SRAM)。我用std::vector
来获得对象的矢量,它工作正常。通过使用我使用的闪存增长了14Kb(而RAM使用增长0.2Kb)std :: vector:值得吗?
现在,我要在平台上实现其他一些使用某些int
或double
的数组的平台。
我不知道在编译时这些数组中的一些元素的数量。我到目前为止所做的通常实现就是“估计”一些最大限制,然后简单地使用该长度的数组。
现在,vector可以动态改变它的大小,这很好。
但值得吗?或者我应该为数组分配一些固定的最大大小?我不认为我想用另一个14Kb来做这件事。
有何评论或建议?
编辑: 我想我实际上要求的是: 什么是使用一个向量的内存将使用的内存量,说10个元素?它会像int myarray [10]一样吗?多少还是多少? 我刚刚从someprogrammerdude读取了一条评论,它解释了使用闪存的增加是由于代码的增加,这是有道理的,因为我包括一个库!
为了确定我已经很好理解了:你使用''std :: vector''的''push_back'' /''emplace_back''成员函数? – nefas
不知道除了你以外,谁能回答这个问题。你已经说过你不想花费14Kb的矢量,所以它有点不清楚什么是问题 – user463035818
因为矢量是模板,通过使用两个不同类型的矢量,你可以增加生成的代码量。需要注意的是,这只是增加的代码量,运行时*内存*开销应该低得多,并且添加第二个向量可能不会使生成的代码量增加一倍。最后,这是一个折衷:你想要一个“动态数组”的优点,并使用更多的代码,或者你想要一个静态数组,使用较少的代码(和FLASH),但可能浪费RAM而不是? –