我有一套SCADA站端监控程序,代码量约10M,近日我在现场发现,进入监控系统后机器运行正常,但运行2个月左右,系统就明显变慢,重启系统后,运行速度正常。在正常情况下,操作不多,系统每15分钟存一次数据。按理保存数据不应该使系统变慢。我怀疑使内存泄漏。我做了一个试验,在系统每一个调用new的地方,调用一次就计一次数,在调用delete地方也一样,结果我发现,在系统不保存数据的时候,两个计数都不变,但一保存数据,计数明显增加,而且new的计数比delete多,第一次保存:new 346 delete 228,第二次保存:new 559 delete 342,我想,照此发展下去,用不了多久,内存就会用光。用户反映,系统经常出现虚拟内存不足现象,而机器的物理内存是128M,系统刚启动时整个物理内存的用量才64M。操作系统是Win2000 Pro,VC++6.0。请问大虾们怎么回事?
D:\_\testpj\testpj\TreeControl\source\ShellTreeCtrl_beta\ShellTreeCtrl\Demo.cpp(64) : {59} normal block at 0x00344678, 100 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.以上提示告诉我们demo.cpp第64行分配的内存没有释放。
类似方法,看看你们的程序内存问题在哪里?