int *p = new int (10);//创建一个变量并初始化为10
int *p = new int [10];//创建10个变量未初始化;
若后面加上{}则初始化为0;
对于内置类型malloc和new区别不大;
对于自定义类型malloc不能通过访问私有成员进行初始化,
而new可以调用默认构造函数进行初始化;
int *p = new int[10]; 空间占40bite
A* p = new A[10]; 空间占44/40 bite
若没有析构则不需要上述处理。
new -> operator new + 构造
malloc -> operator new //不会初始化
为什么有了new 还要搞一个operator new 呢?
new 的空间是在堆上的,而operator new 是在内存池上开空间
内存池