中易网

请教:C++中,在【子函数】中new申请的内存用完不删,会导致内存泄露吗?

答案:3  悬赏:0  
解决时间 2021-03-02 10:44
比如:
void function()
{
int *p = new int[100000];
}

int main()
{
for(int i=0; i<100000; i++)
function();
return 0;
}
最佳答案
先来进行分析一下:
fucntion函数里的
int *p = new int[100000];
做的事情
1、申请了一片内存int[100000]
2、申请了了一个指针变量 *p。同时p指向这片内存。

在子函数结束以后,会做的事情
1、销毁指针变量*p
注意:只是销售了指针变量,并不会自动的回收int[100000]这片内存
new出的内存必须要用delete才会回收

结果就造成了这片内存 没有人知道在哪了,因为指向它的指针*p已经被销毁了。
(当然了,操作系统是知道的。但是它认为你程序中还在使用这片内存,因为你没有delete掉)

这样你程序一直开着的话,就会一直占用着这些内存,但是实际上你却没有使用。

当然你main函数一退出,所有的内存就会都回收了。
全部回答
肯定会的. new出的内存必须要用delete释放.
你好! 首先要清楚堆内存和栈内存的区别 1.new 和 malloc开辟的是堆内存,生命周期由程序员管理,在子函数中开辟的内存,如果不手动的释放的话,会到程序结束后,才被系统回收。 2.普通的变量声明,在内存中是栈内存,函数结束之后,生命周期也就结束了。 我的回答你还满意吗~~
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
肝火旺能不能吃秋梨膏
海信智能体验馆在什么地方啊,我要过去处理事
在rtf文档中怎么翻页
美的嵌入式空调E6如何解决
海尔双动力洗衣机电脑板多少钱?
思贤一街怎么去啊,有知道地址的么
电控箱,控制选色杆装线
汽车蓄电池正负接反对车有什么影响
支付宝为什么突然不能发信息
男朋友说我脾气不好,又说性格不好,我是金牛
苹果ID密码忘了怎么注销iCloud账号
三三地产文圣店这个地址在什么地方,我要处理
关于车子在露天和在停车库里,那个会对保养好
有一个粉丝做的视频,是张艺兴撒娇及卖萌的,
有谁见过这是什么?昨天山里摘的,长在很长的
推荐资讯
multisim怎么用示波器观察bjt输出特性曲线
哪里有收购古建筑的
木门门套线尺寸怎么计算,举例包框尺寸为880
男生跟女生在一起的时候女生挠你的痒痒的女生
2015年6月初生姓赵文字辈取名宝典
高一数学,求助f(x+2)=f(2-x)是什么意思
无锡泰伯实验小学怎么样,教师资质如何?升学
玻璃餐桌的钢化玻璃与不锈钢腿是怎样连接的。
上海那些图书馆可以带书自习?
西宁盛荣医疗器械经销部平安分店在哪里啊,我
名爵MG 3有哪些颜色?
枣庄兴光建材有限公司地址有知道的么?有点事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?