我的程序中需要动态申请内存,我用GETMEM(POINT,SIZE)分配内存,然后把分配的内存指针放到队列中,然后用线程从队列中获得指针,然后处理,当处理结束后,再用FREEMEM(POINT)释放内存。
但是由于数据量比较大,我的程序在运行几个小时后,系统内存会长100M左右,当我的程序关闭后,
内存会慢慢地减少(而且需要一点时间)。很奇怪。
请高手指点一下。

解决方案 »

  1.   

    系统内存长到100M时,那个队列有多长?你能够确定GETMEM分配的内存块,都由FREEMEM释放了吗?你可以用一两个变量作计数,分配一下或者释放一下就加一或者减一..
    最后你可以观察到当内存长到100M时候,有多少内存块未释放...同你预想的有什么不同..
      

  2.   

    哦..GETMEM,FREEMEM其实是内存管理器类提供实现..
    有两个全局变量,AllocMemCount,AllocMemSize
      

  3.   

    估计也是分配内存没有及时释放,这样越积越多,
    我遇到过内存暴长的问题是在动态Create Form窗体时,在关闭Create的Form发生错误无法正常关闭时.
    后来增加了异常处理就好了.
      

  4.   

    同意 windindance(风舞轻扬) 的意見, 如果你是經常,連續性的使用, 不如用個結構數組, 一次分配, 程序結束時再釋放