[討論] 一次malloc一個byte和宣告char array[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
06/08 22:29, 1F
→
06/08 22:32, , 2F
06/08 22:32, 2F
→
06/08 22:56, , 3F
06/08 22:56, 3F
→
06/08 22:57, , 4F
06/08 22:57, 4F
→
06/08 22:58, , 5F
06/08 22:58, 5F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章