Eigen内存分配器aligned_allocator
在使用Eigen的时候,如果STL容器中的元素是Eigen数据库结构,比如下面用vector容器存储Eigen::Matrix4f类型或用map存储Eigen::Vector4f数据类型时:
vector<Eigen::Matrix4d>;
std::map<int, Eigen::Vector4f>
这么使用编译能通过,当运行时会报段错误。
对eigen中的固定大小的类使用STL容器的时候,如果直接使用会出错,所谓固定大小(fixed-size)的类是指在编译过程中就已经分配好内存空间的类,为了提高运算速度,对于SSE或者AltiVec指令集,向量化必须要求向量是以16字节即128bit对齐的方式分配内存空间,所以针对这个问题,容器需要使用eigen自己定义的内存分配器,即aligned_allocator。
这个分配器所在头文件为:
#include <Eigen/StdVector>
根据STL容器的模板类,比如vector的声明:
template<typename _Tp, typename _Alloc = allocator<_Tp> >
class vector : protected _Vector_base<_Tp, _Alloc>
{
.....
}
使用aligned_alloctor分配器,上面的例子正确写法为:
std::vector<Eigen::Matrix4d,Eigen::aligned_allocator<Eigen::Matrix4d>>
std::map<int, Eigen::Vector4f, Eigen::aligned_allocator<std::pair<const int, Eigen::Vector4f>>
上述的这段代码才是标准的定义容器方法,只是我们一般情况下定义容器的元素都是C++中的类型,所以可以省略,这是因为在C++11标准中,aligned_allocator管理C++中的各种数据类型的内存方法是一样的,可以不需要着重写出来。但是在Eigen管理内存和C++11中的方法是不一样的,所以需要单独强调元素的内存分配和管理。
转载于:https://www.cnblogs.com/kerngeeksund/p/10912257.html
Eigen内存分配器aligned_allocator相关推荐
- 内存分配器设计的演进
文章目录 栈内存空间是否够用 系统调用申请内存 最简单的内存分配器实现 -- bump allocator 可扩容的 Bump alloactor 通过free-list 管理的 allocator ...
- mysql 自动管理内存_MySQL内存管理,内存分配器和操作系统
导读 作者:Sveta Smirnova 翻译:郑志江 校对:徐晨亮 原文 :MySQL Memory Management, Memory Allocators and Operating Syst ...
- 内存分配器memblock【转】
转自:http://blog.csdn.net/kickxxx/article/details/54710243 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 背景 Data ...
- slab 内存分配器介绍(一)
原文引用地址:https://www.ibm.com/developerworks/cn/linux/l-linux-slab-allocator/ 动态内存管理 内存管理的目标是提供一种方法,为实现 ...
- STL内存分配器:allocator
一.STL泛型容器 与 内存管理 1.1 STL泛型容器中隐藏了内存管理工作 STL提供了很多泛型容器,如vector,list,map等.程序员使用时之关心如何存放对象,不用关心如何管理内存. 容器 ...
- 内核中的几种内存分配器
内存管理是内核是最复杂同时也是最重要的一部分,其中就涉及到了多种内存分配器,如果内核初始化阶段使用的bootmem分配器,分配大块内存的伙伴系统,以及其分配较小块内存的slab.slub和slob分配 ...
- [CNT]关于自己的一个小小的slab内存分配器
引言:应用级别的内存分配器的作用主要在于减少malloc函数的调用,降低系统的内存碎片.作为高性能的服务器,一般都会有自己的内存分配方案.slab作为一款Linux内核的经典内存分配方式,应用在很多的 ...
- MySQL内存管理,内存分配器和操作系统
原文 :MySQL Memory Management, Memory Allocators and Operating System 本文涉及链接在文末展示 When users experienc ...
- Linux glibc内存管理:用户态内存分配器——ptmalloc实现原理
文章目录 ptmalloc 设计假设 Arena Chunk Bins 内存分配.释放流程 总结 C++ STL : SGI-STL空间配置器源码剖析 Linux 内存管理 | 物理内存管理:物理内存 ...
最新文章
- QT5中如何使用SQLite
- Javaamp;amp;(面试题)初始化顺序总结
- Java虚拟机参数设置(转)
- 单链表--键盘输入、插入、删除、查询、输出
- python script文件夹在哪_Python获取当前脚本文件夹(Script)的绝对路径方法代码
- 程序员/设计师能用上的 75 份速查表
- linux下mysql-5.6忘记root密码,重置root密码详细过程
- python蟒蛇绘制实例分析_011 实例2-Python蟒蛇绘制
- php $r,PHP
- Linux网络编程---I/O复用模型之epoll
- PowerDesigner物理模型用法总结
- grep awk 搜索日志常用命令
- EXTJS4.0视频教程(网盘下载)
- 数字大写;大写的一到十;…
- 桌面虚拟化传输协议之android spice及spice源码分析之server(1)
- Samba:centos服务器之间相互共享文件夹,可以用win10连接共享文件夹,并可以使用Docker部署
- 计算机控制系统是闭环还是开环,电喷摩托车系统的开环控制与闭环控制
- 哈尔滨计算机管理,哈尔滨戴斯酒店计算机管理完整系统.doc
- 常见端口号一览(详细)
- 华为技术官又出神作,鸿蒙操作系统完整文档笔记现已疯传
热门文章
- Airbnb NYC2019分析实战
- mac 升级java_mac版java更新升级方法
- aic值检验 p值_R语言入门之独立性检验
- STM32 阿里云MQTT esp8266 AT命令
- 归宿 - 写给无处安放的内心
- 华为云服务器配置过程
- 亚马逊云服务器防火墙,Amazon WAF | Web 应用程序防火墙 | 亚马逊云科技
- actions vuex 请求_vue中vuex的actions里面请求接口,提交给mutations报错
- 一台机器(群晖、CentOS)挂两台网心云docker
- 用Mothur制作OTUtable