[討論] 一次malloc一個byte和宣告char array[1]的差異?

看板C_and_CPP (C/C++)作者 (黑金屬魂)時間15年前 (2011/06/08 21:58), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串1/1
需讀進一檔案處理,需考慮記憶體大小,假設一次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

06/08 22:29, , 1F
malloc可能需要一些額外的空間來儲存資訊
06/08 22:29, 1F

06/08 22:32, , 2F
不過那些額外的空間應該不是使用者需要煩惱的 XD
06/08 22:32, 2F

06/08 22:56, , 3F
你想比cache嗎XD
06/08 22:56, 3F

06/08 22:57, , 4F
一次存一個byte很慢..要是檔案是1G的話= =,不過在記憶體有
06/08 22:57, 4F

06/08 22:58, , 5F
現的話(考慮記憶體不大且有限)
06/08 22:58, 5F
文章代碼(AID): #1Dxt_rVU (C_and_CPP)
文章代碼(AID): #1Dxt_rVU (C_and_CPP)