使用C / C ++中的有限主内存编辑10gb文件

我需要使用仅100mb的内存尽快对包含数字列表的10gb文件进行排序。 我把它们分成几块然后合并它们。 我目前正在使用C文件指针,因为它们比c ++文件i / o(至少在我的系统上)更快。 我尝试了1gb文件并且我的代码工作正常,但是在打开10gb文件后,只要我fscanf就会引发分段错误。
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;
    }
我应该用什么呢? 对于如何以最佳方式解决这个问题,您有什么建议吗?     
已邀请:
这种称为外部排序的算法有一类。合并排序的变体是外部排序算法(只是google用于合并排序磁带)。 但是如果你在Unix上,在单独的进程中运行sort命令可能更容易。 BTW。打开大于2 GB的文件需要大量文件支持。根据您的操作系统和库,您需要定义宏或调用其他文件处理函数。     

要回复问题请先登录注册