Eigen3 内存对齐问题

Eigen3 内存对齐问题,第1张

Eigen3 内存对齐问题
  • Eigen3 内存对齐问题
    • 以 Eigen 对象为class成员的结构
    • 使用STL容器或手动内存分配
    • 将 Eigen 对象按值传递给函数

Eigen3 内存对齐问题

参考官方文档
如何设置取消内存对齐的 *** 作没找到
以下内存对齐问题c++17好像不需要考虑
主要分为以下3种情形:

以 Eigen 对象为class成员的结构
class Foo
{
  ...
  Eigen::Vector4d v;
  ...
public:
  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
};

定义class时候加入Eigen3提供的宏

public:
  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
使用STL容器或手动内存分配
  1. 数组容器
    使用内存对齐的方式定义
std::vector >
  1. 有序容器
    使用内存对齐的方式定义,有序容器还要知道数据类型的排序方式。

std::map, 
         Eigen::aligned_allocator > >
将 Eigen 对象按值传递给函数

c++中的值传递涉及拷贝 *** 作,内存对齐会出错。

  1. 使用如下方式取代值传递void my_function(Eigen::Vector2d v);
void my_function(const Eigen::Vector2d& v);
  1. 值传递包含Eigen数据类型的class
struct Foo
{
  Eigen::Vector2d v;
};
void my_function(Foo v);
void my_function(const Foo& v);

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/662355.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-18
下一篇2022-04-18

发表评论

登录后才能评论

评论列表(0条)

    保存