智能指针是行为类似于指针的类对象,智能指针包含在头文件<memory>中
-
动态内存管理经常出现的问题:忘记释放内存造成内存泄漏;尚有指针引用就释放,造成引用非法内存的指针。智能指针可自动释放所指向的对象。
-
智能指针包括:auto_ptr、unique_ptr、shared_ptr
- auto_prt:
C98++提供,但已被C++11摒弃。 - unique_ptr:
建立所有权概念,对于特定的对象,只能有一个智能指针可拥有它,这样只有拥有对象的智能指针的构造函数会删除该对象。然后,让赋值操作转让所有权。 - shared_ptr:
通过引用计数跟踪引用特定对象的智能指针数。赋值时,计数加1,而指针过期时,计数减1。仅当最后一个指针过期时,才调用delete。