我的SLMATH library有问题。不知道是有人使用过还是以前使用过?无论如何,问题在于,当我启用SSE优化进行编译时(在VS 2010中),我显然必须提供一个容器,该容器具有SSE类型对象的正确字节对齐方式。可以,因为SLMATH中有一个小类是对齐的 vector 。它将 vector 分配对齐在8个字节的边界上(即我不使用std::vector )。现在的问题是,看起来任何包含slm::mat4之类的结构或类也必须在这样的边界上对齐,然后再放入集合中。因此,例如,我使用对齐的 vector 创建了slm::mat4的数组,但是如果我创建一个名为Mesh的类,并且Mesh包含slm::mat4,并且我想将Mesh放入std::vector中,好吧,调试时出现奇怪的内存错误。因此,考虑到文档确实非常稀疏,使用该库的任何人都可以告诉我,确切地说,要与SSE优化一起使用它必须做什么?我的意思是我不喜欢必须绝对在各处使用对齐的 vector 来代替std::vector的想法,以防万一slm::组件最终以某种方式封装到类或结构中。另外,如果周围有快速的 vector /矩阵/图形数学库,那么它与SLMATH一样好。感谢您提供的任何建议。编辑1:不使用SLMATH的简单重现案例说明了问题:#include <vector>class Item{public: __declspec(align(8)) struct { float a, b, c, d; } Aligned;};int main(){ // Error - won't compile. std::vector<Item> myItems;}罗宾 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 如果您在声明变量时在其变量声明上使用__declspec(align)或将其包装在声明自身正确对齐的结构中,则可能会起作用。我没有使用过有问题的库,但是看来这可能是您面临的问题。alignt选项的引用可以在here中找到。 (adsbygoogle = window.adsbygoogle || []).push({});
10-08 04:16