void* buffer = (void*)malloc(100);
通过在 malloc() 函数前加上 (void*),实现了什么,我们是否覆盖了返回类型?
由于 malloc 已经返回一个 void 指针,因此什么也没有实现。这相当于:
void* buffer = malloc(100);
调用的返回类型malloc
被显式地转换为void
指针。这有点多余,因为它已经返回 a void*
,但可能存在以澄清开发人员的意图(或者他只是搞砸了)。
在这种特殊情况下,它什么也不做。但是,由于 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
。