You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

shared_ptr<int>与shared_ptr<int[]>的区别及一维数组指向选型

shared_ptr 和 shared_ptr<int[]> 的区别及选择建议

核心区别

  • 内存释放逻辑不同

    • shared_ptr<int> 默认使用delete释放内存,若指向数组,会因调用delete而非delete[]导致内存泄漏(数组必须用delete[]释放所有元素)。
    • shared_ptr<int[]> 是专门为数组设计的特化版本,默认用delete[]释放内存,能正确清理数组的全部元素。
  • 元素访问方式不同

    • shared_ptr<int> 不支持[]运算符,访问元素需先通过get()获取原始指针,再用指针下标访问,比如:ptr1.get()[0]。
    • shared_ptr<int[]> 直接支持[]运算符,可像普通数组一样访问元素,比如:ptr2[0],使用更直观。
  • 迭代器与遍历支持不同

    • shared_ptr<int[]> 提供begin()和end()成员函数,能直接配合标准库算法(比如std::sort)遍历数组。
    • shared_ptr<int> 无此类成员,遍历数组需手动基于原始指针实现。

选择建议

如果你明确需要指向一维int数组,直接选shared_ptr<int[]>——它是针对数组场景优化的设计,既能避免内存泄漏风险,又能提供更贴合数组的操作体验。

内容的提问来源于stack exchange,提问作者heyloo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 08:10:53