new malloc 区别

new malloc 区别
1 new  不但分配对象空间, 还会在分配后调用对象的构造器, 而 malloc 只是分配, 不构造:

class  A {
public :
A(): m_value(
0 )
{
}

public :
int  m_value;
};

struct  B {
A a;
};

* pb1  =   new  B;
* pb2  =  (B  * )malloc( sizeof (B));

pb1 因为被 
new  调用了构造函数, 所以 pb1 -> m_value  ==   0 ,
pb2 的构造函数没有被调用, 所以 pb2
-> m_value 的值不确定(即未初始化).

2 new  分配时要指定类型, 是类型安全的; 而 malloc 返回的是  void   * , 类型不安全; 类型不安全的东西在 C ++  里是不被提倡的 !  

你可能感兴趣的:(new malloc 区别)