make_shared和new的区别
时间: 2023-10-21 19:23:44 浏览: 74
make_shared和new在分配和初始化动态内存时有一些区别。
make_shared在动态内存中分配一个对象并初始化它,返回指向此对象的shared_ptr。它可以通过传递参数给构造函数来初始化对象。make_shared定义在头文件memory中。它的优点是可以减少内存分配和对象构造的次数,提高性能。同时,make_shared还可以自动销毁对象并释放内存,无需手动管理。
而new则是用于在动态内存中分配一个对象,并返回指向该对象的指针。使用new需要手动管理内存,包括手动析构对象和释放内存。它需要使用delete或delete[]来释放对象和内存。new可以用于分配单个对象,也可以用于分配数组。但是new分配的内存可能会导致内存碎片产生。
总结来说,make_shared可以简化动态内存分配和对象初始化的过程,并且自动管理内存的释放。而new需要手动管理内存,并且可能导致内存碎片的产生。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [shared-ptr(智能指针)举例.pdf](https://download.csdn.net/download/qq_43934844/87504633)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [[modern c++] std::make_shared 和 std::shared(new)的区别](https://blog.csdn.net/ykun089/article/details/121787439)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [new 和 make_shared 在内存上的区别](https://blog.csdn.net/anna2117/article/details/101802846)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)