【发布时间】:2021-03-19 17:01:09
【问题描述】:
我一直对此很好奇 - 为什么在 C++ 中我必须从 malloc 转换返回值而不是在 C 中?
以下是 C++ 中有效的示例:
int *int_ptr = (int *)malloc(sizeof(int*));
这是 C++ 中不起作用的示例(无强制转换):
int *int_ptr = malloc(sizeof(int*));
我听说在 C 中,事实上,从malloc() 转换输出是一个错误。
谁能评论这个话题?
【问题讨论】:
-
C++ 对类型更敏感要求您通过强制转换指定确切的类型。
-
这与您的问题没有直接关系,但我认为您想要
sizeof(int),而不是sizeof(int*)。也就是说,使用sizeof *int_ptr会更好,这可以保证您为int_ptr碰巧指向的任何类型分配正确的内存量。 -
为什么要在 C++ 中使用 malloc?
-
在 C 中,强制转换没有错,但完全没有必要。在 C++ 中,使用
void*或malloc()来处理任何事情(使用为 C 设计的接口除外)几乎肯定是错误的。 -
@R.. 去学习 D 或 Go 什么的