Tar*_*ing 4 c++ embedded allocation
我是嵌入式软件开发人员,因此,我不能总是使用所有不错的C ++功能。最困难的事情之一是避免动态内存分配,因为动态内存分配在所有STL容器中普遍存在。
std::vector但是,在使用变量数据集时,此功能非常有用。问题是,分配(例如std::reserve)在初始化或固定时没有完成。这意味着复制发生时可能会发生内存碎片。
最好让每个向量都有一个分配的存储空间,该空间就是向量可以增长到的最大大小。这将产生确定性的行为,并有可能在编译时映射微控制器的内存使用情况。push_back当向量达到最大大小时调用会创建一个std::bad_alloc。
我读过std::allocator可以写一个替代版本来创建新的分配行为。是否可以通过这种方式创建这种行为,std::allocator或者替代解决方案更合适?
我真的很想继续使用STL库并对其进行修改,而不是重新创建自己的向量,因为与实现相比,我更容易犯错误。
旁注1:
我不能用作std::array:1:我的编译器未提供它; 2:确实具有静态分配,但是我仍然必须管理数据和缓冲区之间的边界std::array。这意味着std::vector用我要摆脱的分配属性重写a 。
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |