二、unique_ptr自定义删除器问题
三、智能指针总结
- 智能指针的设计思想: 帮助释放内存,防止忘记释放时产生内存泄漏;
void fun(int a)
{
int* test=new int();
if(a)
{
//此处产生内存泄漏,因为在满足if条件时,没有delete test,需加上下面一行:
//delete test;
return;
}
delete test;
return;
}
- 智能指针的选择
- 不定义删除器时,unique_ptr更快,尺寸和裸指针一样,shared_ptr为自身含有的裸指针个数的大小的2倍,因此unique_ptr更小,使用更灵活。
- 当需要定义多个指针指向同一个变量时,只能选shared_ptr;