内存映射问题???

quwei197874 2011-06-14 03:44:11
现有许多小文件(两三千),每个文件都中有两个相同的结构体,struct1,struct2,只是 每个文件中结构体中数据个数差很多,(例如在文件一中struct1里的数组只有一个值,文件二相同数组可能有几百个值)。

我要把这些小文件全部映射到内存中,并把所有struct1合并到一起,所有struct2合并到一起。

感觉上面做法理论上是可行的,不过由于文件都是动态大小的,不知具体应该怎么处理,请帮帮忙,提提意见也好。
...全文
83 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Louistao 2011-06-14
  • 打赏
  • 举报
回复
内存映射..菜鸟第一次听说,马克
ryfdizuo 2011-06-14
  • 打赏
  • 举报
回复
内存映射一般是几百兆甚至G级别。你的问题STL容器就可以胜任。
就想叫yoko 2011-06-14
  • 打赏
  • 举报
回复
逐个读取文件 解析里面的数据 分别插入到你 struct1 和 struct2 类型的数组或链表中
qq120848369 2011-06-14
  • 打赏
  • 举报
回复
你是想合并到一起,还是想读到内存里整理一下.

如果只是想合并起来,那么建第三个文件,逐个放进去就可以了.
quwei197874 2011-06-14
  • 打赏
  • 举报
回复
我要做一个测试工具,不用考虑内存,效率什么的。
pathuang68 2011-06-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 healer_kx 的回复:]

每个文件的大小是多少?大约的?1K以内吗?
如果2000-3000的话,都读到内存里面,估计会有10M不到的内存消耗哦。

但是不管怎么说,你要做的事情,不适合用内存映射文件了。
[/Quote]
++

内存映射适合处理单个文件很大的情况,而不是适合处理文件个数很多而每个文件都不大的情况。
楼主的问题,直接操作硬盘上的文件就很好,用不着内存映射。
healer_kx 2011-06-14
  • 打赏
  • 举报
回复
每个文件的大小是多少?大约的?1K以内吗?
如果2000-3000的话,都读到内存里面,估计会有10M不到的内存消耗哦。

但是不管怎么说,你要做的事情,不适合用内存映射文件了。
bdmh 2011-06-14
  • 打赏
  • 举报
回复
不要把所有的数据都读到内存,如果太大,很可能引起当机,可以指定一个大小,比如,100m,每次加载一个文件(如果太大,可以对一个文件分段读取),然后写到内存中,下一个接着上一个写,当容量到达100m时,把这个内容写到文件,然后用内存映射,指到文件尾巴,继续读取写入,依次循环
c_losed 2011-06-14
  • 打赏
  • 举报
回复
也可以考虑读取结构体内容到容器
在容器里进行操作

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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