在C++中,用new申请了指针指向某内存却不用delete销毁,直到整个应用程序结束,会发生什么后果?试详述原

希望能说说操作系统是如何对这一问题反应的?... 希望能说说操作系统是如何对这一问题反应的? 展开
 我来答
chensuchang
2010-09-05 · TA获得超过6399个赞
知道大有可为答主
回答量:6655
采纳率:50%
帮助的人:4949万
展开全部
会导致内存泄露。
操作系统管理内存,是有一个资源队列的,用new申请一块内存时,从可用资源中取一块可用资源分配给应用程序。如果没有用delete归还系统,这块内存就不会返回资源队列,无法再分配给其他应用程序。
就好像你从图书馆借书,结果看完后你自己把书放回书库,没有在图书管理系统中体现出来这本书已经返回书库。别的人来查询借书时就找不到这本书。这种情况多了,就会出现本来书库满满的,但再也借不到书。
内存泄露也这样,明明还有很多内存,但程序编写不严谨,造成大量内存丢失。直到重启系统。
kingpin58
2010-09-05 · TA获得超过121个赞
知道答主
回答量:25
采纳率:0%
帮助的人:0
展开全部
申请了内存但是不用delete销毁,在程序运行期间内存一直被使用,操作系统认为这段内存属于该程序,不会将这段内存分给别的程序使用,如果使用delete之后,操作系统就获得了这段内存的使用权,可以将其分给别的程序或者线程。但是该程序结束时,操作系统将会收回该程序占用的所有资源,包括CPU资源,内存资源,显存资源。所以说,程序结束之后操作系统会把没有delete的内存区域释放出来给其他程序使用。但是为什么一定要在程序内部释放(delete)内存呢,是因为如果不释放的话,该段内存一直处于被使用的状态,操作系统无法将它分配出去,如果这种情况聚集起来会使得内存崩溃的,或者是说内存泄漏:该内存被占用,但是实际上什么事情也没有做。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
力波鸿0i
推荐于2016-08-18 · TA获得超过1259个赞
知道小有建树答主
回答量:461
采纳率:100%
帮助的人:349万
展开全部
这个要分情况讨论:
1。在一般情况下,若你写的程序是应用程序,那么如果不用delete销毁,操作系统会帮你销毁……因为每一个程序都有一个4GB虚拟内存,程序关闭后会自动解除这个程序所有用过的对象…
2。在内核情况下,也就是说你的程序是驱动程序,调用的是native API的话,不delete却关闭了程序,那么这块内存必须等到重新启动后才能释放,系统是不会自动释放它的…
其实一般你只要知道1。就行了,如果想知道更多的内容,就先看一下IntelCPU的保护模式,弄清楚操作系统多线程的原理,然后再参考一些驱动开发的书籍,或者rootkit获取ring0级权限程序的原代码(比如CIH)等……
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式