呵呵,去他的论坛注册不上,只好在这里发贴了。
大家看看我的问题再哪? 
我按他的动态加载方法加载了一个含有对话框的dll,点击菜单,就会弹出一个dll中的对话框。但是关闭对话框,再打开,任务管理器中的内存指示又增加了一些。重复打开,再关闭。不断地增加。
void CMy2000Dlg::OnMENUITEMmunu() 
{
// TODO: Add your command handler code here
typedef void (WINAPI * TESTDLL)();

HINSTANCE hmod;

hmod = ::LoadLibrary ("ttc.dll");

if(hmod==NULL)

{

        AfxMessageBox("Fail");

}

TESTDLL lpproc;

lpproc = (TESTDLL)GetProcAddress (hmod,"Show");

if(lpproc!=(TESTDLL)NULL)

        (*lpproc)();
   FreeLibrary(hmod); 为了试验hmod是否被释放,我在这加了如下代码
      if(hmod!=NULL)

{

        AfxMessageBox("没有释放资源");//结果,弹出对话框后,关闭以后,就显示了此对话框的内容

}
}

解决方案 »

  1.   

    1)FreeLibrary()并不能把这个句柄置为NULL呀。
    FreeLibrary()有返回值,判断返回值的真假来判断是否释放。
    2)另外LZ怎么知道内存一直没有释放呢?
    如果只是简单的通过NULL == A 就说明A没有释放是不负责任的,因为出现野指针的时候,这种方式是没有用的
      

  2.   

    哦,我是不断弹出关闭一个dll中的对话框的时候,发现任务管理器中的内存指示在增加。这是怎么回事,句柄空间不是被FreeLibrary()释放了吗
      

  3.   

    是不是lpproc这的问题
    TESTDLL lpproc;

    lpproc = (TESTDLL)GetProcAddress (hmod,"Show");

    if(lpproc!=(TESTDLL)NULL)

            (*lpproc)();
      

  4.   

    不一定是你程序问题,有可能是DLL里面对话框的代码存在内存或资源泄漏
      

  5.   

    肯定是在show函数里面,每调用一次,就new出来一个dlg,而没有delete以前的old