C语言的指针有个明显的缺点,必须手动申请内存和释放内存。如果在函数中手动申请内存,最后却没有释放内存,这将导致内存泄漏。而使用智能指针可以在很大程度上解决这类问题。因为智能指针是个类,当类离开作用域时,会自动执行析构函数释放资源。把释放内存的操作写入析构函数,那么释放内存的操作就会自动执行。所以说,使用智能指针可以在很大程度上解决指针不主动释放内存导致的错误。
C++有以下智能指针:auto_ptr、shared_ptr、weak_ptr、unique_ptr。
C语言的指针有个明显的缺点,必须手动申请内存和释放内存。如果在函数中手动申请内存,最后却没有释放内存,这将导致内存泄漏。而使用智能指针可以在很大程度上解决这类问题。因为智能指针是个类,当类离开作用域时,会自动执行析构函数释放资源。把释放内存的操作写入析构函数,那么释放内存的操作就会自动执行。所以说,使用智能指针可以在很大程度上解决指针不主动释放内存导致的错误。
C++有以下智能指针:auto_ptr、shared_ptr、weak_ptr、unique_ptr。