我的目標是讀取文件並將其內容存儲在char數組中,並給定要讀取的偏移量和字節數。我寫了一個相同的功能,它工作正常。malloc函數如何在C中工作?
現在這個函數是從別的地方調用的。所以我試圖聲明一個變量char * data
,它將保存上述函數返回的內容。聲明後我試圖分配一些內存。 (我知道多少,因爲我指定了要讀取的字節數)。它去如下:
char * data;
char * filename = "alphabet.txt";
int data_size = 10;
printf("data size: %d\n", data_size);
data = (char*) malloc (data_size);
printf("Size allocated to data: %d\n",sizeof(data));
return 0;
該代碼給出了以下的輸出:
data size: 10
Size allocated to data: 8
我不理解這種行爲。有人可以請我解釋一下。
非常感謝
shahensha
「malloc函數如何在C中工作?」 - 不,「運營商的規模如何在C工作?」 – 2013-09-26 19:31:27
[只有返回的指針才能獲取malloc的大小](http://stackoverflow.com/questions/12131925/getting-the-size-of-a-malloc-only-with-the-returned-指針) – 2013-09-26 19:32:04
在'c'中,你不應該把malloc的返回值轉換爲'(char *)'。您可以毫無問題地將void指針指定給它。 –