2

我正在检查不需要显式转换 malloc 调用结果的代码,但是每当我尝试这样做时,编译器都会抛出错误。

IE

char *somevar;
somevar = malloc(sizeof(char) * n); //error
somevar = (char *)malloc(sizeof(char) * n); // ok
4

2 回答 2

9

如果您使用 C++ 编译器而不是 C 编译器,则会发生这种情况。由于 C++ 需要显式转换。问题不仅在于(取消)转换malloc结果,还在于任何指向其他指针的 void 指针。

于 2012-05-12T23:53:51.337 回答
1

你还记得包含函数原型吗?对于 malloc(3),这是:

#include <stdlib.h>
于 2012-05-13T00:06:54.663 回答