我正在讀一本書,在C malloc函數需要「塊」的內存要分配作爲參數的數量,決定了你投什麼的塊被多少字節基礎malloc返回的值。例如我的系統上的int是4個字節:因爲編譯器知道int爲4個字節çmalloc函數的大小參數
int *pointer;
pointer = (int *)malloc(10);
將撥出40個字節。
這讓我困惑的原因有兩個:
我讀了,大小參數實際上是要分配,並沒有涉及到任何類型的大小的字節數。
的malloc是返回地址的功能。它如何根據從void返回的地址的外部轉換調整其分配的內存的大小,以不同的類型?這只是我應該接受的一些編譯器魔法嗎?
我覺得這本書是錯的。任何幫助或澄清非常感謝!
下面是書上說的:
char *string;
string = (char *)malloc(80);
80套預留80塊存儲。塊大小是由類型轉換,(字符*),這意味着設置的malloc()被用於80個字符的查找存儲器。
你正在閱讀哪本書,對於內存分配的工作方式有點古怪的看法? – 2013-04-06 04:22:59
C多功能一體化桌面參考傻瓜...我喜歡傻瓜系列:) – 2013-04-06 04:26:46
如果它出錯了,很難預測還有什麼不對。有時間來識別這本書(所以我們可以將它列入黑名單),然後去做一個更好的書。 _ [...時間passeth ...] _顯然,這是一個'For Dummies'的書;在這種情況下,也寫成'傻瓜'。將它強行扔出窗外或倒入垃圾,並獲得更好的東西。 '塊大小'是'一個字節'或'sizeof(char)';演員陣容不會影響通話的行爲。 – 2013-04-06 04:26:55