现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

内存泄漏的几种情况

2012-11-19 22:38 工业·编程 ⁄ 共 426字 ⁄ 字号 暂无评论

1.new,malloc后没有delete,free
2.创建内核对象(比如CreateFile,CreateMutex,CreateThread),后没有释放内核对象句柄.
3.创建内存映射文件,CreateFileMapping,MapViewOfFile后没有CloseHandle(),UnMapviewofFile
4.创建GDI对象后,比如LoadIcon,LoadImage,CreateImageList等等,没有Destroy掉
5.创建DC后,比如GetDC(), 没有释放DC句柄

6.保留虚拟地址空间 VirtualAlloc(),然后提交物理存储器后,没有释放掉

注意:

1,当一个分配了内存的对象,把它的地址赋值给另一个对象时,并不会造成内存泄漏。如下面的情况:

A*a=new A;

A* b=a;

delete a;

只是单纯的把a的指针地址赋给了b而已,当delete a后,b也同样被释放掉了,因为它们是相同的一块内存,这个时候b也不能用了,要注意。

给我留言

留言无头像?