另外,使用std::make_shared消除了一些控制块需要记录的信息,这样潜在地减少了程序的总内存占用。 对std::make_shared的效率分析可以同样地应用在std::allocate_shared上,所以std::make_shared的性能优点也可以扩展到这个函数上。 2、 异常安全 我们在调用processWidget的时候使用computePriority(),并且用new而不是std:...
优点性能提升:make_shared允许编译器生成更高效、内存占用更小的代码。通过一次内存分配,它合并了对象和控制块的内存管理,减少了静态代码大小,并加快了执行速度,因为内存分配次数减少。异常安全性:make_shared确保了资源在异常发生时的安全释放。即使computePriority函数在std::make_shared调用之前抛出异常...
使用make_shared内存可能无法及时回收,对内存要求要的场景需要注意。