1、什么是内存泄漏?
内存泄漏指的是在程序里动态申请的内存在使用完后,没有进行释放,导致这部分内存没有被系统回收,久而久之,可能导致程序内存不断增大,系统内存不足……引发一系列灾难性后果;(关于程序申请内存分配方式,详见:内存分配方式)
2、零容忍
排除内存泄漏对于程序的稳健型特别重要,尤其是程序需要长时间、稳定地运行时。C++这类动态内存申请释放都是由程序员控制的语言,稍不注意,很有可能就会有未释放的内存。这类问题,虽然有的时候仅仅只是泄漏了几个字节,但是危害极大。因此,我们一般都是要做到:内存泄漏零容忍!!!
3、检查、定位内存泄漏
检查方法:
在main函数最后面一行,加上一句_CrtDumpMemoryLeaks()。调试程序,自然关闭程序让其退出(不要定制调试),查看输出:
Detected memory leaks!
Dumping objects ->
{453} normal block at 0x02432CA8, 868 bytes long.
Data: <404303374 > 34 30 34 33 30 33 33 37 34 00 00 00 00 00 00 00
{447} normal block at 0x024328B0, 868 bytes long.
Data: <404303374 >