读书人

关于内存泄露~该如何处理

发布时间: 2012-03-07 09:13:51 作者: rapoo

关于内存泄露~~
程序中的内存泄露是怎么回事?如何保证不出问题?

[解决办法]
内存泄漏:程序设计中,在堆上使用malloc或new申请了内存,但没有使用free和delete释放内存,导致程序运行过程中不再有用的内存无法重新利用。严重的内存泄漏会导致程序的整体性能低下,甚至程序非正常退出。
不出问题:一句话,在堆上申请了内存,就一定要记住释放该内存。
============================================
补充:不可以重复释放,一般指针释放之后,马上赋值为个0使之成为0指针,这样即使重复的释放也不会出错,对于0指针进行free(),delete是安全的行为
[解决办法]
前面的朋友都给出许多理论知识,我也就不多说了,给你打个比方吧,

内存好比是一个桌子,桌子上的空间是有限的,你自己的程序就好比是一本书,你看书的时候把书放在桌子上占用了一些空间,看书过程中你可能需要一个笔记本来记录东西,这时你必需把笔记本也放到桌面,同时也占用了一些空间,这个笔记本占用的空间就是你分配的内存(new),在你没有把这本笔记本拿走之前(delete),这块空间别的书是用不了的.

如果你看的书一直放在桌面上,而没把笔记本及时拿走,那很可能就会有第二,第三个笔记本来占用桌面的空间,这时别的书就没办法用这些空间,这样的情况就是内存泄露了!

如果你的书一直放在桌面上的话,笔记本就会越来越多,直到把整个桌面占满了,系统也就崩溃了!

想不出问题的话就尽量在不用笔记本的时候把笔记本拿走(delete),有new就要有对应的delete

读书人网 >C++

热点推荐