动态内存

来源:互联网 发布:linux查看raid信息 编辑:程序博客网 时间:2024/05/21 12:09
1.内存静态内存:保存局部static对象,类static数据成员以及定义在任何函数之外的变量栈内存:保存定义在函数内的非static变量。静态内存和栈内存中的对象由编译器负责创建销毁自由空间(堆):存储动态分配的对象,对象的生存周期由程序来控制,也就是说当对象不在使用时,我们的代码必须显式销毁。

shared_ptr智能指针也是模板,默认初始化为空指针</strong>shared_ptr unique_ptr都支持的操作shared_ptr<T>sp;unique_ptr<T>up;空指针,指向T类型对象p*p 解引用p->memp.get() 返回p中保存的指针</span>

p.swap(p)swap(p,q)交换指针
3 shared_ptr独有的操作
make_shared<T>(args)  返回shared_ptr,指向一个动态分配的类型为T的对象,使用args初始化此对象

shared_ptr<T>p(q) P是shared_ptr q的拷贝,此操作会递增q中计数器

p=q; p和q都是shared_ptr,此操作会递增q的引用计数,递减p的引用计数

p.unique() 若p.use_count()返回1,则返回true,否则返回falsep.

use_count() 返回与p共享对象的智能指针数量

4.直接管理内存new delete
<span style="font-family: Arial, Helvetica, sans-serif;">int </span><span style="font-family: Arial, Helvetica, sans-serif;">*p=new int;无初始化的无名对象</span>
5 unique_ptr某个时刻只能指向一个对象,不支普通的持拷贝赋值,但可以拷贝赋值一个即将销毁的unique_ptr(比如:返回局部unique_ptr);当我们定义一个unique_ptr时需要将其绑定到new返回的指针上
unique_ptr操作unique_ptr<T>u1 空指针,调用delete来释放它的指针unique_ptr<T,D>u2  <空指针,调用可类型为D调用对象来释放它的指针unique_ptr<T,D>u(d)u=nullptr 释放u指向的对象,将u置为空u.release() u放弃对指针的控制权,返回指针u.resetu.reset(q)u.reset(nullptr0

0 0