【发布时间】:2021-11-27 04:55:12
【问题描述】:
我在看一些关于指针的讲座,在演示代码中,老师在buffer = (char*)malloc(sizeof(char) * 128);行中对malloc的结果进行了类型转换:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *buffer;
buffer = (char*)malloc(sizeof(char) * 128);
if (buffer == NULL)
{
puts("Unable to allocate memory");
exit(1);
}
puts("Buffer allocated");
free(buffer);
puts("Buffer freed");
return 0;
}
我的问题是为什么。这是必要的吗?如果我已经将要分配的内存块声明为sizeof() 和char,这似乎是多余的。
【问题讨论】:
-
不需要演员表。你
buffer = malloc(sizeof *buffer * 128);