void* buffer = (void*)malloc(100);
通过为malloc()函数添加前缀(void *),实现了什么,我们是否覆盖了返回类型?
答案 0 :(得分:6)
由于malloc已经返回一个void指针,因此无法实现。这相当于:
void* buffer = malloc(100);
答案 1 :(得分:4)
对malloc
的调用的返回类型被显式转换为void
指针。这有点多余,因为它已经返回void*
,但是可能可能存在以澄清开发人员的意图(或者他刚搞砸了)。
答案 2 :(得分: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 ++,我不能告诉您应该使用new
代替。