永发信息网

VC++中调用析构函数发生错误

答案:2  悬赏:50  手机版
解决时间 2021-02-06 05:44
VC++中调用析构函数发生错误
最佳答案
在构造函数中动态创建了内存,这块内存是在堆上创建的,与程序的生命周期一样。
heaparr=new type [heapmaxsize];
用heaparr保存了这块内存的地址。
而你又执行了heaparr=a;
也就是heaparr指向了数据组a的地址(你动态分配的内存地址已经没有了,但这块内存还存在,此时已经出现了内存泄露).
heaparr保存数组a的地址,但是你并不能保证数组a的生命周期与你写的这个类是一致的,当类析构的时候要执行delete []heaparr,此时呢heaparr可能已经是空了,它指向的地址不存在,所以会崩溃。
全部回答
你的构造函数有问题,而且造成了内存泄漏。
heaparr=new type [heapmaxsize]; //heaparr指向一块新申请的堆内存
heaparr=a; //heaparr指向a,上次新申请的堆内存丢失,并且未被回收。
因为heaparr指向a,而a并不一定是在堆上动态申请的内存,所以未必能delete,即使能,那么在另外的函数中再delete则仍然报错。看你出错的原因,应该是a不是动态申请的内存所导致。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
假如发现古墓怎么办?
华纳婚纱摄影地址在什么地方,想过去办事
变压器原副边线圈线粗细的选择
老年人发热的原因包括A.高温环境B.易中暑的体
格调婚纱摄影(国际生活港绿草堂对面)地址在哪
戒色真的有必要吃素吗
根不断生长的主要原因是CA. 分生区和伸长区细
云滴的意思是什么啊?知道的请说下!
1/9 X+25=1/4X怎么解??
智能电表插上智能电卡后为什么没有电,该怎么
为什么人说不爱就不爱了?
高考的时候可以戴着戒指吗?
车子在行驶过程中突然成了空档是什么问题
【柳枝像什么被风吹起】...国旗在空中飘扬.国
Uniform是可数还是不可数
推荐资讯
臻雅风尚摄影礼服地址好找么,我有些事要过去
cpu :AMD 631。主板:华硕 F1A55 -M LX PLUS
纳米二氧化钛颗粒的密度是多少?
拾光纪实影像怎么去啊,我要去那办事
矿泉水瓶阳光照射时间长了会风化吗
在植物细胞的有丝分裂过程中,下列特点出现的
哪里可以免费下载整套excel2012教学视频啊
吧乐吧·智能家居如皋体验中心我想知道这个在
金麟投资地址在哪,我要去那里办事
胎儿的性别决定发生在A. 卵细胞形成时B. 形成
求死循环程序代码?
现在想去天津蓟县盘山爬山去凉不凉能去吗?冬
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?