首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问有关问题:大文件处理(C语言)

2013-12-05 
请教问题:大文件处理(C语言)问题:C语言需要处理N个大文件,size有可能很大,但是大小上限不能具体知道。需要

请教问题:大文件处理(C语言)

问题:
C语言
需要处理N个大文件,size有可能很大,但是大小上限不能具体知道。
需要并行处理文件。
文件的内容有可能涉及到解码什么的。

我一开始用了2个方法:
<1>先声明一个超大数组,一次性读完文件。问题是太浪费内存,因为文件有可能是很小的。
<2>用malloc动态分配一个文件大小的space。问题是频繁的动态分配,会造成过多的内存碎片,不适合长时间的运行。
C++好像有内部内存管理的类string,但是C++不太拿出手。。。。
哪位大神帮忙想想办法。
[解决办法]
可用double buffer,开两个比如4KB的buffer,一个用于读取数据,一个用于解析,完了把两个buffer交换一下,如此循环。

引用:
问题:
C语言
需要处理N个大文件,size有可能很大,但是大小上限不能具体知道。
需要并行处理文件。
文件的内容有可能涉及到解码什么的。

我一开始用了2个方法:
<1>先声明一个超大数组,一次性读完文件。问题是太浪费内存,因为文件有可能是很小的。
<2>用malloc动态分配一个文件大小的space。问题是频繁的动态分配,会造成过多的内存碎片,不适合长时间的运行。
C++好像有内部内存管理的类string,但是C++不太拿出手。。。。
哪位大神帮忙想想办法。

[解决办法]
怕内存碎片就用一个内存池

看你的需求
我觉得是否对文件固定读取大小,逻辑处理,然后在读...如果返回大小=<0,就说明读完了.
不知道文件中的数据是否可以这切割处理.


你说用string那些东西,stl内部也是用了线程池的

热点排行