对于类中存在指针变量,指针变量的内存是动态分配的。会存在主要两个问题。

(1)在赋值,复制等方面,浅复制,只是讲指针的值相互复制,但指针指向的对像却是公用的,假如某一个对象析构后,会将公用的指针指向的对象删去,另一个对象会出现悬垂指针。

解决办法:

(1)深复制,每次重新创建一个对象,赋予相同的值。

(2)引用计数,直到的对象为0时,才删除公共的对象。

(2)动态创建一个类对象时,此类中含有动态分配内存的指针变量,假如在delete之前,代码出现异常,则此对象中动态分配的内存会泄露。

因此出现一个类封装,RAII 资源分配即初始化,auto_ptr类是具体应用。