(1) C++ 智能指针(std::shared_ptr和std::unique_ptr)不是可以自己回收内存吗,那么它创建对象是在哪个区域,全局区?代码区?堆?栈?
(2)结构体、枚举、Lambda表达式(Lambda表达式最终也会生成对象)它们创建的对象分别占用哪里的内存呢?
(3)通过智能指针创建对象是不是替代new创建对象的?
c++-智能指针-内划分,见文本,它们占用哪里的内存
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
社区专家-Monster-XH 2023-02-08 21:26关注(1)不是,是存储在堆内存中的。当创建对象时,它们会通过new关键字分配堆内存。它们目的是管理动态内存,在不再需要对象时,自动回收其内存。
(2)结构体、枚举和Lambda表达式创建的对象可以分别存储在代码区、栈和堆上。具体的位置取决于它们的生存周期。
(3)不能。智能指针是一种对象,可以管理堆上的动态内存,但是它并不能替代 new 创建对象。在 C++ 中,可以通过 new 分配动态内存,也可以通过智能指针管理动态内存,这两者都可以用于创建对象,但是它们的目的和工作方式不同。本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报 编辑记录解决 1无用