我正在构建一个体素引擎,因此我担心内存使用情况,使用 12 位而不是 16 位 block ID 可以节省大量内存。我有一个 3D block id 数组,每个 id 都有一个静态配置。
我不确定实现这一目标的好方法是什么。有没有一种方法可以获取一 block 原始内存并自己管理它,这是一个好主意吗?我可能会遇到什么问题吗?有更好的方法吗?
我有一些 c++ 经验,但大部分时间都花在 Java 和 c# 上。
感谢您的阅读!
最佳答案
这是可能的,例如:-
- 保留一个 8 字节变量(存储 5 个变量,每个变量 12 位),或者
- 使用
char[k]
保留k
~ceiling{(12*n)/8.0f}
,然后使用 union 等....
这是一个链接(我就是问这个问题的人),我了解了如何在 block 中分配内存。
How to use void* as a single variable holder? (Ex. void* raw=SomeClass() )
但是,我不太同意你想要做的事情。
据我所知,您的方法的缺点是:-
- 一些错误:实现起来比较困难。
- 对齐问题:性能可能会更差。
看到这个:Memory alignment : how to use alignof / alignas?
传统建议:在(过早)优化它之前对其进行分析。
关于c++ 12位变量,我该怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43152077/