你的这个题目真拗口。理解起来真困难。感觉像是N个地方同时指向同一个区域。智能指针具体是啥我不清楚,我也没用过,但是 基本应该和 引用计数器 是同一个东西。就是说 你想删它实体对象 是删不掉的,只有 把所有指向它的指针都清除了 它才真正消失。
所谓“内存泄漏”就是说用指针动态开辟的内存没有释放(使用delete或者free函数(free只能针对malloc函数开辟的内存))。结果这块区域一直被标记“已使用”,但是实际上指针永远不使用它。(因为A a,b开辟了两个不同的内存单元,内部指针p不断创建新空间,就无法释放了)。C或者C++又不会自动释放,造成内存泄漏。解决方法:使用析构函数(参考代码)~A(){ delete p;}