我正在检查不需要显式地转换malloc调用结果的代码,但每当我尝试这样做时,编译器都会抛出错误。
即
char *somevar;
somevar = malloc(sizeof(char) * n); //error
somevar = (char *)malloc(sizeof(char) * n); // ok
答案 0 :(得分:9)
如果您使用C ++编译器而不是C编译器,则会发生这种情况。因为C ++需要显式转换。
问题不仅在于(un)转换malloc
结果,而且还有任何指向其他指针的void指针。
答案 1 :(得分:1)
您还记得包含功能原型吗?对于malloc(3),这是:
#include <stdlib.h>