作者deh3215 (黑金屬魂)
看板C_and_CPP
標題[討論] 一次malloc一個byte和宣告char array[1]的差異?
時間Wed Jun 8 21:58:10 2011
需讀進一檔案處理,需考慮記憶體大小,假設一次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