首页 > 解决方案 > 为什么C++语言的malloc函数前面要写指针类型?

问题描述

int *pi = malloc(sizeof(int));

它可以用 C 语言执行,但在 C++ 语言中,它有编译错误。

在 C++ 语言中,它应该使用这种方式。

int *pi = (int*) malloc(sizeof(int));

C 和 C++ 语言中的 malloc 函数有什么区别?

标签: c++c

解决方案


C 和 C++ 是两种不同的语言,每种语言都有自己的一套规则。

在 C 和 C++ 中都malloc返回一个void*.

在 C 中,avoid*与任何指针兼容,因此可以(并且应该)直接分配它。在 C++ 中,它与其他任何东西都不兼容,因此不能直接将其分配给非void*.

因此,如果您想malloc在 C++ 中使用(您不应该),您必须在您的示例中将void*返回值转换为适当的指针类型。int*


推荐阅读