使用eigen时如果不注意,容易存在内存对齐问题。
fixed-size vectorizable Eigen Types
fixed-size vectorizable Eigen 类型的变量size固定,且是16byte的倍数,使用不注意时可能导致内存对齐问题。
Eigen::Matrix2d
Eigen::Matrix2f
Eigen::Matrix4d
Eigen::Matrix4f
Eigen::Affine3d
Eigen::Affine3f
Eigen::Quaterniond
Eigen::Quaternionf
可能的原因
参考了官网对内存问题的解释:
https://eigen.tuxfamily.org/dox/group__TopicUnalignedArrayAssert.html
- 创建的class/struct 含有fixed-size vectorizable Eigen 类的成员变量

本文记录了在使用Eigen库时遇到的Segmentation Fault问题,主要原因是fixed-size vectorizable Eigen类型变量的内存对齐问题。官方文档提到,如果在类或结构体中包含这类变量,需要确保正确处理内存对齐。避免问题的方法包括:在类的public部分使用EIGEN_MAKE_ALIGNED_OPERATOR_NEW,使用指针而非引用操作,以及在使用STL容器时包含Eigen::aligned_allocator并指定其作为分配器。此外,建议使用引用而非值传递处理这类变量。
1143

被折叠的 条评论
为什么被折叠?



