能否指定vector内存分配的地址?

hztj2005 2014-08-10 07:52:25
我的程序经常需要读入大量结构化的数据到vector 中,我通常用mapviewoffile映射读入后,再复制到vector中。这样有一个缺点,就是内存会分配两次。而有一个函数mapviewoffileEx可以吧数据映射到指定的地址,我就希望把数据直接映射到vector中,但是没有成功。因为mapviewoffileEx要求内存对齐到64k,而vector分配的地址却没有固定。
所以我问,是否有办法指定vector内存分配的地址,对齐64k。
...全文
568 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
图灵转世 2014-08-11
  • 打赏
  • 举报
回复
还是用c好,就malloc,free。
hztj2005 2014-08-11
  • 打赏
  • 举报
回复
引用 6 楼 jiangsheng 的回复:
有人写过一个基于内存映射的allocator https://github.com/johannesthoma/mmap_allocator
谢谢版主,视野开阔。现在还在美国?
蒋晟 2014-08-10
  • 打赏
  • 举报
回复
有人写过一个基于内存映射的allocator https://github.com/johannesthoma/mmap_allocator
hztj2005 2014-08-10
  • 打赏
  • 举报
回复
http://www.cnblogs.com/wpcockroach/archive/2012/05/10/2493564.html
hztj2005 2014-08-10
  • 打赏
  • 举报
回复
下面网页也是讨论这个问题的。 C++ Allocator http://blog.csdn.net/Kyle_Chenxr/article/details/5223768 三种的allocator实现源代码的对比 http://www.2cto.com/kf/201209/158534.html STL的内存分配器Allocator http://www.usidcbbs.com/read-htm-tid-4896.html C++中的allocator类(内存分配器) http://www.tuicool.com/articles/IfqMny http://blog.chinaunix.net/uid-20451980-id-1945164.html c++中allocator的使用 对于刚刚接触c++的程序员对于allocator这个东西可能感到莫名其妙,我这里记录了自己在学习c++过程中对allocator的理解。 首先,我们要知道的一件事情是c++对于内存的分配方法。我们向比较一下c和c++中内存使用的差异来说明allocator的必要性。 在c语言中我们使用malloc.h中的malloc,realloc等等函数来向系统申请内存。这种策略的优点是无论是请求大小的内存都可以达到较高的分配效率,这是由c语言本身所处的中级语言性质决定的。而对于c++虽然兼容c的语法但是已经是一种全新的语言,也就是说我们不应该将c语言中的许多思维习惯带进c++的世界。c++的new以及new[]等操作符对应malloc,以realloc等内存请求函数。区别是new,new[]对malloc等函数的一种wrapper,之所以要做这种wrapper取决于c++的构造函数特性(详细这里不讲解),而对于这种策略来服务于较大的object是比较有“性价比”的(杀牛自然用牛刀嘛^_^);而对于一些small的object的时候,就没有什么优势了(牛刀杀鸡)。我们是不是一定要向这种死板的策略低头呢,答案是否定的。c++是一种优秀的编程语言(尽管比较难学习),它不会这么“木头”,我们可以认为的改变默认的内存策略(这个在我的"c++零碎知识(一)"中有)。 以上介绍了c和c++在内存使用的不同之处,现在言归正传,allocator是c++的STL中针对不同模板的特点而实现的一种内存分配器。默认的情况下我们不必关心这个东西,因为库中已经为相应的模板实现了缺省的allocator(一般是倒数第二个参数)。正是这个allocator可以使得STL中的各种类型的模板达到最佳的效率,如果我们希望改变默认的allcator该怎么办?很简单实现一个具有allocator功能的class在构在STL模板实例的时候传递给它就可以了(我在c++零碎知识(一)实现了一个很简单的allocator)。 实例: vector<int> vInt;//默认的allocator被使用 vector<int, myAllocator> vIntMy;//使用自定义的myAllocator 这个问题到这里。
hztj2005 2014-08-10
  • 打赏
  • 举报
回复
引用 2 楼 zzz3265 的回复:
vector, list 都可以自定义内存分配函数, 模版最后的一个默认参数
谢谢提醒,回想起c++primer似乎讲过Allocator。 下面这个网页也是讨论Allocator的。看来不简单。 http://cissco.iteye.com/blog/379093
Yofoo 2014-08-10
  • 打赏
  • 举报
回复
vector, list 都可以自定义内存分配函数, 模版最后的一个默认参数
  • 打赏
  • 举报
回复
据我了解应该不行,因为当你动态添加元素的时候,vector类会自动重新分配内存,这时有可能会导致未知问题。 如果不用vector类呢?

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧