我的一个小程序,因为需要,需要动态载入BMP资源,大概有几十张,都是160x240x8bit的,每次只需显示其中一张。我的处理方法不是在程序启动时全部载入,然后随用随调;而是在需要时用LoadImage()动态载入,用完立即用DeleteObject()释放。
可是,在测试时发现,随着不断的运行,程序的内存占用会从刚启动的不到4000K飙至7000多K。因此想问一下,这是不是正常现象,就是说是我的程序中有泄漏的Bug还是Windows没有实时回收释放的内存块造成的?
可是,在测试时发现,随着不断的运行,程序的内存占用会从刚启动的不到4000K飙至7000多K。因此想问一下,这是不是正常现象,就是说是我的程序中有泄漏的Bug还是Windows没有实时回收释放的内存块造成的?
hBmp = LoadImage(g_hInstance, 101, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
DeleteObject(hBmp);编译,启动。在资源管理器里监视内存占用,发现从启动的3200K增长至4400K左右,并稳定在这个值。最小化后,瞬间降为700多K,然后逐步增长并稳定在2100K。然后最大化,发现保持在2800K就不再上升了。
呵呵,这个大概涉及到Windows内核的内存管理机制。总之,不是偶的程序内存泄漏就行。