gpt4 book ai didi

c++ - C 和 C++ 中 new 和 malloc 的行为

转载 作者:太空狗 更新时间:2023-10-29 19:37:59 24 4
gpt4 key购买 nike

在 C 中,它是 considered poor form对调用 malloc 的结果进行类型转换。然而,在 C++ 中调用 malloc 的结果似乎应该 是类型转换,即使 mallocnew 具有返回类型 void* 并且对 new 的调用不是类型转换。为什么在 C++ 中 new 返回的 void 指针会被自动提升,而 malloc 返回的 void 指针不会自动提升?

最佳答案

您将 operator newnew 运算符混淆了。 operator new 只是分配原始内存并返回一个 void*,而 new T 还在分配后调用构造函数并返回一个 T*

此外,您必须在 C++ 中转换 malloc 的结果,因为与 C 不同,C++ 不允许从 void* 隐式转换为其他指针类型。请注意,void* 在 C++ 中很少使用。

关于c++ - C 和 C++ 中 new 和 malloc 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14910788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com