<分区>
int *pi = malloc(sizeof(int));
用C语言可以,但用C++语言会编译出错。
在C++语言中,应该这样使用。
int *pi = (int*) malloc(sizeof(int));
C和C++语言中的malloc函数有什么区别?
<分区>
int *pi = malloc(sizeof(int));
用C语言可以,但用C++语言会编译出错。
在C++语言中,应该这样使用。
int *pi = (int*) malloc(sizeof(int));
C和C++语言中的malloc函数有什么区别?
最佳答案
C 和 C++ 是两种不同的语言,每种语言都有自己的一套规则。
在 C 和 C++ 中,malloc
返回一个 void*
。
在 C 中,void*
与任何指针兼容,因此可以(并且应该)直接赋值。在 C++ 中,它与其他任何东西都不兼容,因此它不能直接分配给非 void*
。
所以如果你想在 C++ 中使用 malloc
(你不应该),你必须将 void*
返回值转换为适当的指针类型,int *
在你的例子中。
关于c++ - 为什么C++语言的malloc函数前面要写指针类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67121298/