编译时,出现段错误(核心已转储)
原因
在矩阵运算时调用了 Eigen 库,为了提高运算速度,向量化必须要求向量是以 16 字节即 128bit 对齐的方式分配内存空间,所以针对这个问题,容器需要使用 eigen 自己定义的内存分配器。对 Eigen 中的固定大小的类使用 STL 容器的时候,如果直接使用就会出错。
解决方法
加上头文件include<Eigen/StdVector> ,并在定义 STL 容器时做如下修改:
例如1:将
std::vector<Eigen::Vector2d>
修改为
std::vector<Eigen::Vector2d,Eigen::aligned_allocator<Eigen::Vector2d>>
例如2:将
vector<Eigen::Isometry3d> poses;
修改为
vector<Eigen::Isometry3d,Eigen::aligned_allocator<Eigen::Isometry3d>> poses;
即添加上
Eigen::aligned_allocator<Eigen::??>
完成后,编译