c – boost:初始化共享指针重置vs make_shared
发布时间:2020-12-16 10:12:39 所属栏目:百科 来源:网络整理
导读:除了生成代码的大小之外,使用reset()在函数make_shared()上初始化共享指针有什么区别? 案例1使用reset() boost::shared_ptrA pA;pA.reset(new A()); 案例2使用make_shared() boost::shared_ptrA pA;pA = boost::make_sharedA(); 一般来说,使用reset over ma
除了生成代码的大小之外,使用reset()在函数make_shared()上初始化共享指针有什么区别?
案例1使用reset() boost::shared_ptr<A> pA; pA.reset(new A()); 案例2使用make_shared() boost::shared_ptr<A> pA; pA = boost::make_shared<A>(); 一般来说,使用reset over make_shared减少可执行文件的大小是一个好习惯吗? 解决方法
reset(new T(…))分配堆块,构造对象,为引用计数器分配新的堆块并初始化引用计数器.
make_shared< T>(…)分配比对象所需的稍大的堆块,并在同一堆块中构造对象和引用计数器. make_shared()运行得更快并且需要更少内存的可能性很高. 但是,如果您使用的是像Microsoft Visual Studio这样的IDE,则存在一个小缺点:Intellisense无法向您显示构造函数中使用的参数的名称.代码工作正常,但编辑make_shared()调用很不舒服. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |