要搞清楚这个问题,首先要明白,new和malloc都会作些什么。
new有两种形式:new函数,new操作符。
前者和malloc的作用是一样的,就是分配一块没有初始化的raw memory,用一个void*型的指针指向它。用法:
int size=10;
void *p=new(size);
后者是c++特有的,它会先执行上面的功能分配一块内存,内存的大小就是其后面的类所占空间,然后在这块空间上执行该类的构造函数,对这块raw memory实施初始化。返回一个该类的指针指向该空间。用法:
class A;
A *p=new A;