C++ 动态内存

C++ 动态内存

  • 动态分配的对象的生存期与它们在哪里创建的无关,只有当显式地释放时,这些对象才会被销毁。
  • 使用动态内存的一个常见原因是为了让多个对象共享(不是拷贝)内部的数据,并使得当一个对象销毁时,该数据不会被销毁,其它对象仍然可以正常使用。

  • shared_ptr只在拷贝和赋值时其内部的引用计数器才会加1。所以不要用shared_ptr的get()初始化另一个智能指针

shared_ptr<int> p(new int(30));
{
    shared_ptr<int> q(p.get());//此时p、q指向同一块内存,但是p和q的引用计数都为1
    //q.reset(p.get())与上述同理,这里reset的参数是一个内置指针,所以reset不属于拷贝或赋值
}//当代码块结束后,q被销毁,q指向的内存块被释放,这时p成了空悬指针且当p被销毁时,该内存块被二次delete
  • 智能指针不支持指针算数运算。如果非要用到指针的算数运算时,可以使用智能指针的get()获取内置指针,再用该内置指针做运算。
  • -
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值