c++ - 为什么动态分配的内存需要类型转换?

标签 c++ c malloc

在 malloc() 返回的 C 地址中隐式类型转换,而在 C++ 中我需要显式类型转换。但是我使用的是一个整数指针,它会根据指针算法指向下一个地址,那么为什么我需要类型转换内存地址?

我实际上使用的是“new”关键字,但我需要澄清一下我的想法。

最佳答案

But I'm using an integer pointer which will point out to next address according to the pointer arithmetic

是的,它会,但它在这里不相关。

malloc 返回一个 void *

在 C 中,指向 void 的指针可以隐式转换为指向任何其他类型的指针。

在 C++ 中,没有这种隐式转换(大概是为了使语言使用起来更安全一些)。

就这么简单。

关于c++ - 为什么动态分配的内存需要类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53172732/

相关文章:

C++ sin不返回正确的值

c - malloc(sizeof(int)) 和 malloc(sizeof(int*)) 有什么区别

c - 由于 malloc 导致段错误

c++ - 如何在基类中使用复制构造函数?

c++ - 堆栈结构中的动态数组(在堆上)会发生什么情况?

c++ - Intel x86 上的 C++ 原子是否需要内存屏障?

使用 fork() 时计数器不会在 a 内增加

c - 为什么此引用不起作用/无效?

c - 同一地址的不同指针类型

c - malloc执行错误