我将在每一帧分配和取消分配许多表示矩阵的动态多维数组。
优先级,即使以错误检查和手动内存管理为代价:
- 速度
- 内存占用小
考虑到这些优先级,C 样式数组是最佳选择吗?我知道这是一个经常被问到的问题,但我无法找到适合我的情况的明确答案。
最佳答案
如果您可以描述将用于任何特定“帧”(无论是什么)的一组数组所需的最大内存量,并且如果您一次仅处理一个帧(换句话说,您将在一组数组上执行工作,然后转储所有这些数组,然后再对另一组数组执行另一轮工作)然后您可能会通过从大小适合最大可能工作集的静态内存块。
然后你的数组分配可以是一个简单的池分配器,它从 block 的前面为数组分配内存,并将 block 指针调整到刚刚过去的分配位置,为下一个数组分配做好准备。当您完成该组数组的工作后,可以通过“清理池”来释放所有内容 - 只需将 block 指针重置为静态内存池的开头即可。
当然,由于您没有详细说明如何完成工作,因此这种技术可能根本不适合(这可能就是为什么您还没有找到明确的答案 - 这样的答案取决于您正在执行的工作的具体特征)。
关于c++ - 数组、 vector 、Boost::arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9224730/