C++:malloc是否相当于new?

kar*_*ick 5 c++

可能重复:
new/delete和malloc/free有什么区别?

大家好我是c ​​++的菜鸟,想知道是否

memblock = (char *)malloc( currentByteLength); 
Run Code Online (Sandbox Code Playgroud)

相当于

memblock = new char[currentByteLength]
Run Code Online (Sandbox Code Playgroud)

在c ++中.

Naw*_*waz 8

memblock = (char *)malloc( currentByteLength); 

memblock = new char[currentByteLength];
Run Code Online (Sandbox Code Playgroud)

现在没什么区别.但是,如果你更换charint,那么,就不会有区别,因为在这种情况下,malloc将分配大小的内存currentByteLength,同时new将分配大小的内存size(int) * currentByteLength.所以要非常小心.

另外,如果你在表达式中提到的类型new是用户定义的类型,那么默认构造函数将被调用currentByteLength次数来构造对象!

对于内置类型,没有构造函数!

  • 似乎有人在这里几乎每个答案都被贬低了......不确定这一点.希望他们能解释原因. (2认同)