new/ delete和malloc/有free什么区别?
相关(重复?):在什么情况下我使用malloc vs new?
在C++中,不允许在没有显式强制转换的情况下为任何整数指针分配void*指针.这需要使用static_cast.
但这是怎么回事:
int* iptr = new int;
Run Code Online (Sandbox Code Playgroud)
我知道新的运算符定义如下:
void* operator new(size_t);
Run Code Online (Sandbox Code Playgroud)
C++如何处理这个问题?我知道这是一个基本问题,但很重要.我也知道低级代码必须使用void.但这项任务如何合法?iptr是指向int的指针,new返回指向void的指针,它应该触发"错误:从'void*'到'int*'[-fpermissive]"无效转换的消息.
我知道new关键字返回指针,所以返回类型是void*.我的愚蠢问题是为什么new必须返回void*而不是void&?意味着当new他们创建的对象可以使用&运算符的地址返回该对象的地址时.
我知道指针和引用之间的区别.但最后我们使用指针而不是引用.请清除我的困惑谢谢.