menu

hjk41的日志

Avatar

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数组就会出问题

评论已关闭