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

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日