
- Eigen3 内存对齐问题
- 以 Eigen 对象为class成员的结构
- 使用STL容器或手动内存分配
- 将 Eigen 对象按值传递给函数
参考官方文档
如何设置取消内存对齐的 *** 作没找到
以下内存对齐问题c++17好像不需要考虑
主要分为以下3种情形:
class Foo
{
...
Eigen::Vector4d v;
...
public:
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
};
定义class时候加入Eigen3提供的宏
public:
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
使用STL容器或手动内存分配
- 数组容器
使用内存对齐的方式定义
std::vector >
- 有序容器
使用内存对齐的方式定义,有序容器还要知道数据类型的排序方式。
std::map,
Eigen::aligned_allocator > >
将 Eigen 对象按值传递给函数
c++中的值传递涉及拷贝 *** 作,内存对齐会出错。
- 使用如下方式取代值传递
void my_function(Eigen::Vector2d v);
void my_function(const Eigen::Vector2d& v);
- 值传递包含
Eigen数据类型的class时
struct Foo
{
Eigen::Vector2d v;
};
void my_function(Foo v);
void my_function(const Foo& v);
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)