m0_73836574 2023-04-05 11:34 采纳率: 100%
浏览 61
已结题

c++类中new的数组不需要delete吗?为什么写出析构函数然后delete会出现runtime error,不写delete反而不报错

img

img


c++类中new的数组不需要delete吗?为什么写出析构函数然后delete会出现runtime error,不写delete反而不报错

  • 写回答

7条回答 默认 最新

  • 前网易架构师-高司机 游戏服务器领域优质创作者 2023-04-05 14:16
    关注

    你的代码不完整,我指出两个问题。
    1.你的v初始化应该放到构造函数里或者init函数里,如果你放到成员变量初始化里,实际上是在额外的浪费内存空间,因为你在构造的时候先构造成员变量,你的row和col是不是相当于重新赋值,给v又要重新分配内存,这不是良好的编程习惯。
    2.某个操作有浅拷贝或者对v进行了double free双重释放也是容易造成delete崩溃,所以如果发生浅拷贝导致v指向了其他内存,而这个内存在栈空间分配,那么他会随着栈空间被释放而释放,但你delete释放栈空间内存就有问题了,你只能释放堆内存。如果v浅拷贝指向其他堆内存,当这块堆内存释放后,你再在构造内存释放v就造成了double free了。
    望采纳

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

报告相同问题?

问题事件

  • 系统已结题 4月13日
  • 已采纳回答 4月5日
  • 创建了问题 4月5日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度