目的,快速读写20G数据,,
方法:mmap+memcpy
状态:暂时放弃治疗
bug: mmap+memcpy, char 转int 又出问题了
研:mmap + memcpy 与传统 ofream读写对比
乱到我都不想看,,,毕竟草稿本。
各位大佬, 我想用mmap+memcpy将A文件(超过6gb,都是字符) 每个字符变成一个int数据 在写进B文件,但老是core 掉,我的做法如下: 1.mmap好A,关闭文件 2.mmap好B,长度4096, 3.循环读A的1024 个字符,转int,放进一个int 数组, 4.mmcpy 这个数组就B 5.改变offset,再映射,继续2-5的循环 请各位大佬指导下呗,跪谢
还有个问题啊,就是我A是6gb,那么我B直接指定大小4*6gb是否刚好?
刚开始应该用truncate()把文件B的长度设置为文件A的长度。应该是你没扩大文件B的长度,mmap()的参数offset超过文件B的长度,mmap()失败。

本文探讨了通过mmap和memcpy处理20GB大数据的方法,包括遇到的char转int问题、核心dump错误及bus error。通过与传统fstream读写的对比,研究了mmap的效率优势。尽管过程充满挑战,如内存映射的bug和memcpy的错误,但最终实现了大文件的高效读写操作。
最低0.47元/天 解锁文章
2717

被折叠的 条评论
为什么被折叠?



