看板 C_and_CPP 關於我們 聯絡資訊
需讀進一檔案處理,需考慮記憶體大小,假設一次malloc一個byte和宣告一個array[1]來存 data的差異? char *file; char file[1]; fin, fout為宣告的data stream for(i=0 ; i<size ; i+=SIZE) { for(j=i ; j<i+SIZE ; j++) { //1 fread(file, sizeof(char), 1, fin); fwrite(&file, sizeof(char), 1, fout); //2 file = malloc(sizeof(char)); fread(file, sizeof(char), 1, fin); fwrite(file, sizeof(char), 1, fout); free(file); } i+=SIZE; fseek(fin, SIZE, SEEK_CUR); } 以記憶體位址來說,char file[1]從頭到尾都是固定的記憶體位址,而動態記憶體每次宣告 一byte大小,只是每次存data的位值都不同。 以上兩種方式,最後fout寫入的data應該是一樣的..以使用的記憶體大小來說, 應該是相同的...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.160.145.191
james732:malloc可能需要一些額外的空間來儲存資訊 06/08 22:29
james732:不過那些額外的空間應該不是使用者需要煩惱的 XD 06/08 22:32
firejox:你想比cache嗎XD 06/08 22:56
deh3215:一次存一個byte很慢..要是檔案是1G的話= =,不過在記憶體有 06/08 22:57
deh3215:現的話(考慮記憶體不大且有限) 06/08 22:58