假設我想要讀取內存中的整個文件。我會以二進制模式打開它,使用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