我正在读一本书,在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