如何在 GetProcAddress() 中使用时释放在 GetProcAddress() 中分配的资源C++



我正在将C++DLL动态加载到用C++编写的exe中。

我的要求是

1( 使用 LoadLibrary(( 动态加载 DLL

2(调用GetProcAddress的时间超过几次,以分配与DLL中调用的函数相同的函数指针具有相同的签名。

3(那么在调用第二个函数(Function_2(之前,我是否必须释放lpfn函数指针的代码中的任何资源?

//Function pointer
typedef int (__stdcall *EntryPoint)(int nContext, BYTE *pySeed, int nSeedSize, BYTE *pyKey, int *pnKeySize);
int main()
{
HMODULE hDllHandle = LoadLibrary("SA.dll");  // load dll
    if (hDllHandle)
    {
     EntryPoint lpfn= 0;
         if (lpfn = (EntryPoint)GetProcAddress(hDllHandle, "Function_1"))
         {
                 //call the function using lpfn
         }
         else
         {
         }
         //should I release any resources on lpfn before I call/assign 
         // second function  
         if (lpfn = (EntryPoint)GetProcAddress(hDllHandle, "Function_2"))
         {
                 //call the function using lpfn
         }
         else
         {
         }        
     }  
}

嗯?该函数返回一个整数/地址。如果您在循环中重用变量 lpfn 左右,那么您的变量值将被覆盖。

当您不再需要字符串(函数名称(时,您可能更愿意考虑释放它们。

此地址不像堆中需要特殊释放的块。

相关内容

  • 没有找到相关文章