我在一本书中读到,C 中的 malloc 函数将您希望分配的内存“块”数作为参数,并根据您将 malloc 返回的值转换为多少字节来确定块的字节数。例如在我的系统上一个 int 是 4 个字节:
int *pointer;
pointer = (int *)malloc(10);
将分配 40 个字节,因为编译器知道整数是 4 个字节。
这让我感到困惑有两个原因:
我正在阅读,size参数实际上是您要分配的字节数,与任何类型的大小无关。
malloc 是一个返回地址的函数。它如何根据从 void 返回到不同类型的地址的外部转换来调整分配的内存大小?这只是我应该接受的一些编译器魔法吗?
感觉书错了 非常感谢任何帮助或澄清!
这本书是这么说的:
char *string;
string = (char *)malloc(80);
80 预留了 80 个存储块。块大小由类型转换 (char *) 设置,这意味着 malloc() 正在寻找 80 个文本字符的存储空间。