近期de笔记

pthread_join()和pthread_detach()的区别在于前者会使调用程序阻塞在这个地方,并且第二个参数会保存返回信息,后者只有一个参数线程号,不会阻塞,直接系统自动回收资源。

make_shared()的作用是用于在动态内存中分配并构造一个对象,同时返回一个管理该对象的std::shared_ptr。

使用make_shared的好处:如果是new出对象再用智能指针指向它会有隐患例如内存泄漏,而make_shared则保证了对象的创建和智能指针的管理是原子操作。

例如:std::shared_ptr<int> ptr(new int(42)); 和auto ptr=make_shared<int>(42)

使用shared_from_this()的原因是因为std::shared_ptr有个构造函数允许使用一个普通指针作为参数,如果使用上面那种写法,会导致这个返回的std::shared_ptr指向的是一块新的对象内存,改用下面那种写法就确保了返回的std::shared_ptr指向的是同一个对象,否则可能出现多次删除对象的问题。

std::shared_ptr<BadClass> getShared() {
        return std::shared_ptr<BadClass>(this);
    }
//改成这样:
std::shared_ptr<GoodClass> getShared() {
        return shared_from_this();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值