c++ - 内存管理接口(interface)

标签 c++ memory-management

我正在用 C++ 编写一个小型粒子系统,但不确定应该如何管理粒子相关数据 - 应该将其存储在静态或动态数组中、链接列表中、两者的某种混合中,还是其他什么还有人可能会想到吗?

目前我不想做出选择,但宁愿使用抽象类进行内存管理,一方面为我提供分配和释放例程,另一方面负责释放内存在其析构函数中提供资源。我希望通过这种方式,我可以快速、透明地在不同的粒子管理策略之间进行切换和测试。

1)这是合理的做法吗?

2)如果是:是否有任何库提供此类功能?

感谢您的帮助!

最佳答案

对于粒子系统,您可能希望考虑对每个粒子的每个坐标、速度、颜色 channel 等使用一个 std::vector。例如

std::vector<float> x(100);
std::vector<float> vx(100);
etc

而不是

std::vector<Particle> p(100)

这称为 SOA(数组结构)而不是 AOS(结构数组)。前者更适合矢量化。

关于c++ - 内存管理接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21318036/

相关文章:

unix - vm.max_map_count和mmapfs

android - 增加ADT内存

c++ - 虚拟方法和参数查找

c++ - Visual Studio 2019中的GDAL库头文件错误和警告

c++ - 正则表达式驱动的 while 循环没有正确循环

.net - 线程堆和栈

c++ - 从字符串常量到 'char*' 的折旧转换

c++ - 设置 SO_RCVBUF 会减小窗口缩放因子

c++ - 抓双免并妥善处理

iphone - 在 Xcode 4 中添加 socket