Effective C++ 笔记3: 用 new和delete 代替 malloc和free
malloc和free 是C时代的东西,因此他们并不知道什么是constructors,什么是destructors,这就是它们跟 new/delete 的区别
用malloc分配内存,它的单元不会被初始化,这对一些类来说是不可想像的,比如一个链表的结点类:
class Node{
public:
Node : next (NULL){}
Node * next;
}
一般我们会用 next==NULL 来判断是不是到了链表尾,可是如果我们调用的Node并没有被初始化,那我们的判断几乎都会是错误的。
free的时候,destructors也不会被调用,所以很容易造成内存泄漏,比如free一个string数组就会出问题