glibsample初始化为null
释放dll句柄之后glibsample的值没有变化,请问是为什么
glibsample = LoadLibrary("Agent.dll"); //加载dll
myShowme = (showme)GetProcAddress(glibsample,"myShowme");         FreeLibrary(glibsample);        //释放dll

解决方案 »

  1.   

    你可以手动 glibsample = NULL;
      

  2.   

    FreeLibrary释放句柄后不会把HANDLE置空的,要手动自己置空。
      

  3.   

    FreeLibrary(glibsample);        //释放dll
    =========
    这个只是将DLL的引用计数减一,系统在相关DLL引用计数为0时,就会将DLL撤出内存.不管DLL本身是否从内存中撤出,glibsample的值都不会自动变为NULL,你必须手动置NULL
      

  4.   

    NULL要自己弄的,Free掉只是内核计数器中减了1
      

  5.   

    FreeLibrary()函数只是将dll的引用计数减1, 然后系统判断dll的当前引用计数是否为0,若为0则系统将卸载dll映像。
    LoadLibrary()函数返回的句柄通常指向dll在内存中的基址,你的glibsample变量只是保存着这个基址,不管dll是否被卸载,这个变量的值都不会改变(手动更改除外)