(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无用
悬赏问题
- ¥15 matlab中使用gurobi时报错
- ¥15 WPF 大屏看板表格背景图片设置
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂