首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C/C++中使用有限的内存编辑10 in的文件

在C/C++中使用有限的内存编辑10 in的文件
EN

Stack Overflow用户
提问于 2011-01-31 00:15:12
回答 1查看 372关注 0票数 3

我需要使用100mb的内存尽可能快地对包含数字列表的10 as文件进行排序。我将它们分成块,然后将它们合并。

我目前使用的是C文件指针,因为它们比c++文件I/O更快(至少在我的系统上是这样)。

我尝试了一个1 1gb的文件,我的代码运行良好,但在打开10 1gb的文件后,我一fscanf就抛出了一个分段错误。

代码语言:javascript
复制
FILE *fin;
FILE *fout;
fin = fopen( filename, "r" );
while( 1 ) {
    // throws the error here
    for( i = 0; i < MAX && ( fscanf( fin, "%d", &temp ) != EOF ); i++ ) {
        v[i] = temp;
    }

我应该用什么来代替呢?

关于如何以最好的方式去做这件事,你有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-31 00:21:11

为此,有一类特殊的算法,称为外部排序。有一种合并排序的变体,它是一种外部排序算法(只需在google上搜索合并排序磁带)。

但是如果您使用的是Unix,那么在单独的进程中运行sort命令可能会更容易一些。

顺便说一句。打开大于2 GB的文件需要大文件支持。根据您的操作系统和库,您需要定义宏或调用其他文件处理函数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4843910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档