C++ 智能指针
2017-04-12 本文已影响0人
厝弧
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)