li-heng 2023-02-08 21:12 采纳率: 80.8%
浏览 71
已结题

c++-智能指针-内划分,见文本,它们占用哪里的内存

(1) C++ 智能指针(std::shared_ptr和std::unique_ptr)不是可以自己回收内存吗,那么它创建对象是在哪个区域,全局区?代码区?堆?栈?
(2)结构体、枚举、Lambda表达式(Lambda表达式最终也会生成对象)它们创建的对象分别占用哪里的内存呢?
(3)通过智能指针创建对象是不是替代new创建对象的?

  • 写回答

3条回答 默认 最新

  • 社区专家-Monster-XH 2023-02-08 21:26
    关注

    (1)不是,是存储在堆内存中的。当创建对象时,它们会通过new关键字分配堆内存。它们目的是管理动态内存,在不再需要对象时,自动回收其内存。
    (2)结构体、枚举和Lambda表达式创建的对象可以分别存储在代码区、栈和堆上。具体的位置取决于它们的生存周期。
    (3)不能。智能指针是一种对象,可以管理堆上的动态内存,但是它并不能替代 new 创建对象。在 C++ 中,可以通过 new 分配动态内存,也可以通过智能指针管理动态内存,这两者都可以用于创建对象,但是它们的目的和工作方式不同。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月16日
  • 已采纳回答 2月8日
  • 修改了问题 2月8日
  • 创建了问题 2月8日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。