我应该担心std :: vector的内存碎片吗?如果是这样,有没有办法帮助防止它?我并不总是预测我的程序在PC上运行,它们也可能在嵌入式设备/游戏机上运行,所以我不能总是依赖虚拟内存.
然后我再次相信使用动态大小的数组而不是静态数组会更有效,因此只有在需要时才会分配内存.它还可以简化我的程序的设计过程.有没有办法有效地实现这一目标?
谢谢你的建议!
Gor*_*pik 12
你担心的答案可能是std::deque.它为您提供了类似的界面std::vector,但是对于碎片化的内存效果更好,因为它分配了几个小数组而不是大数组.它实际上比std::vector某些方面效率低,但对于您的情况,它可能是一个很好的权衡.
如果您的向量将被重新分配多次然后是,则可能导致内存碎片.避免这种情况的最简单方法是使用std :: vector :: reserve(),如果你或多或少知道你的数组有多大.
您还可以考虑使用std :: deque而不是vector,因此您根本不会遇到内存碎片问题.
这是关于stackoverflow的主题,对你来说很有趣:什么是内存碎片.