注册 登录
编程论坛 VC++/MFC

请教dll泄漏问题

whitecometnj 发布于 2010-11-06 14:03, 576 次点击
// CGrobal.h

class CGrobal
{
public:
    CGrobal();
    ~CGrobal();
    void Create(int sz);
private:
    char *m_pData;
    int  size;
};

// CGrobal.cpp
#include "Grobal.h"

CGrobal g_Grobal;

_declspec(dllexport) void Init(int size)
{
    g_Grobal.Create(size);
}

CGrobal::CGrobal()
{
    size = 0;
    m_pData = NULL;
}

CGrobal::~CGrobal()
{
    if(m_pData)
    {
        delete m_pData;
        m_pData = NULL;
    }
}

void CGrobal::Create(int sz)
{
    m_pData = new char[sz];
    memset(m_pData, 0, sz * sizeof(char));
    size = sz;
}

//////////////////////////////////////////////////////////
以下调用dll
调用1 :
HINSTANCE h1 = LoadLibrary("GROBAL.dll");
.....
Init(5);
.....
FreeLibrary(h1);

调用2 :
HINSTANCE h1 = LoadLibrary("GROBAL.dll");
.....
Init(5);
.....
    {
        HINSTANCE h2 = LoadLibrary("GROBAL.dll");
        ......
        Init(10);
        ......
        FreeLibrary(h2);
    }
.....
FreeLibrary(h1);

// 以上调用的2个例子有内存泄露吗
0 回复
1