Ref:
http://qa.helplib.com/176561
http://blog.csdn.net/dbzhang800/article/details/6403285
https://my.oschina.net/shelllife/blog/50810
1 簡介
C++語言沒有自動內存回收機制,大部分使用C寫的上規模的軟件都存在一些內存方面的錯誤,產品的穩定需要花費大量的時間以及精力。對于C++而言,使用智能指針能便面該類問題。
2 智能指針
智能指針包含于頭文件memory
中。如下所示:
#include <QCoreApplication>
#include <memory>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
shared_ptr<double> pd;
return a.exec();
}
共有如下:
- STL
- auto_ptr (C++11已經摒棄)
- unique_ptr
- shared_ptr
- weak_ptr
使用注意事項:
- 必須顯示的使用智能指針對象
shared_ptr<double> pd;
double *p_reg = new double;pd = p_reg; // not allowed (implicit conversion)
pd = shared_ptr<double>(p_reg); // allowed (explicit conversion)
shared_ptr<double> pshared = p_reg; // not allowed (implicit conversion)
shared_ptr<double> pshared(p_reg); // allowed (explicit conversion)