求解:C++使用指针操作对象数组,执行EnterCriticalSection,程序卡死问题
TestDlg.cpp
CSPDAO ArrSPDao[1];
//CSPDAO* ArrSPDao;
//ArrSPDao = (CSPDAO*)malloc(sizeof(CSPDAO));
ArrSPDao[0].Start();
SPDAO.h
#include "MyLock.h"
class CSPDAO
{
private:
CMyCriticalSection m_lockRecvBuffer;
public:
void Start()
{
CMyLock oLock(m_lockRecvBuffer);
{
}
}
};
MyLock.h
class CMyCriticalSection
{
public:
CMyCriticalSection()
{
::InitializeCriticalSection(&m_cs);
}
~CMyCriticalSection()
{
::DeleteCriticalSection(&m_cs);
}
public:
void Acquire()
{
TRACE("Acquire\r\n");
::EnterCriticalSection(&m_cs);
}
void Release()
{
TRACE("Release\r\n");
::LeaveCriticalSection(&m_cs);
}
private:
CRITICAL_SECTION m_cs;
};
class CMyLock
{
public:
CMyLock(CMyCriticalSection &objMyCS) : m_objMyCS(objMyCS)
{
m_objMyCS.Acquire();
}
~CMyLock()
{
m_objMyCS.Release();
}
private:
CMyCriticalSection& m_objMyCS;
};
问题点:
使用CSPDAO ArrSPDao[1],程序正常运行
使用CSPDAO* ArrSPDao,程序执行到::EnterCriticalSection(&m_cs);卡死 c++ 指针 对象 sizeof class
[解决办法]