做网站竞争者的优势,wordpress文章图片显示不出来,如何推广自己,深圳口碑最好的装修公司排名高效内存分配
std::shared_ptrNode ptr(new Node);上面的代码存在两次内存分配
new Node为ptr分配控制块的内存用于存放引用计数等信息
如果使用std::make_shared只会存在一次内存分配#xff0c;它会一次性申请足够大的空间用于存储Node和控制块
异常安全
void …高效内存分配
std::shared_ptrNode ptr(new Node);上面的代码存在两次内存分配
new Node为ptr分配控制块的内存用于存放引用计数等信息
如果使用std::make_shared只会存在一次内存分配它会一次性申请足够大的空间用于存储Node和控制块
异常安全
void fun(const std::shared_ptrNode node1, const std::shared_ptrNode node2){// TODO
}
func(std::shared_ptrNode(new Node), std::shared_ptrNode(new Node));上面的代码执行顺序很有可能是
new Nodenew Nodestd::shared_ptr赋值td::shared_ptr赋值
如果在第二次new Node时发生异常第一次的Node因还未来得及赋值给std::shared_ptr造成了内存泄漏。
不保留裸指针避免内存泄漏
对象和技术在同一内存空间提高缓存命中率
依赖公共构造函数
内存锁定
shared_ptr是非侵入式的即计数器的值并不存储在shared_ptr内它其实是存在在其他地方——在堆上的当一个shared_ptr由一块内存的原生指针创建的时候(原生内存代指这个时候还没有其他shared_ptr指向这块内存)这个计数器也就随之产生这个计数器结构的内存会一直存在——直到所有的shared_ptr和weak_ptr都被销毁的时候这个时候就比较巧妙了当所有shared_ptr都被销毁时这块内存就已经被释放了但是可能还有weak_ptr存在——也就是说计数器的销毁有可能发生在内存对象销毁后很久才发生。 226-Cshared_ptr和make_shared的优缺点_std::make_shared_sp_13230409636的博客-CSDN博客