假设我想要读取内存中的整个文件。我会以二进制模式打开它,使用fseek
到达文件末尾,然后执行ftell
以获得其大小。 然后我会分配一个与文件大小相同的字符串,然后把它读入,对不对?size_t或长为包含文件的字符串的大小?
问题是ftell
返回long int
,而malloc
应该收到size_t
参数。现在,size_t
可以比long int
大,据我可以告诉(我刚刚检查C:一本参考手册由哈比森和斯蒂尔和第11章提到size_t
可以定义为unsigned long long
,取决于编译器)。我想相反可能是真实的(这将是一个真正的问题,因为我会投到long
,或类似的东西)
所以我的问题是我该如何处理?
谢谢!
编辑:谢谢你们,那真的很快!我将使用mmap
(和posix_madvise
,我在找到关于mmap
的信息后发现它)!
正确的处理方法是跳过上述所有内容,并使用'mmap'或'CreateFileMapping' /'MapViewOfFile'(取决于您的操作系统)。 – 2010-09-29 19:41:26