0
void* buffer = (void*)malloc(100);

通过在 malloc() 函数前加上 (void*),实现了什么,我们是否覆盖了返回类型?

4

3 回答 3

6

由于 malloc 已经返回一个 void 指针,因此什么也没有实现。这相当于:

void* buffer = malloc(100);
于 2012-04-14T19:57:36.123 回答
4

调用的返回类型malloc被显式地转换为void指针。这有点多余,因为它已经返回 a void*,但可能存在以澄清开发人员的意图(或者他只是搞砸了)。

于 2012-04-14T19:58:25.917 回答
4

在这种特殊情况下,它什么也不做。但是,由于 C++ 在类型安全方面比 C 严格得多,因此您通常需要强制转换 的返回malloc

void* x = malloc(100);       //OK in C/C++
int*  y = malloc(100);       //OK in C, error in C++
int*  z = (int*)malloc(100); //OK in C/C++, not recommended for C

但是,由于您使用 C++,我不能不告诉您应该改用 C++ new

于 2012-04-14T20:01:20.503 回答