在使用二级指针操作是出现了下面的提示:
感觉我的指针在申请空间和释放空间上没有什么问题。
定义如下:
BYTE **m_pOrginData;
空间申请如下:
if( NULL != m_pOrginData )
{
for(i = 0; i < m_totalSize; i++ )
{
if( NULL != m_pOrginData[i] )
{
delete []m_pOrginData[i];
}
}
delete []m_pOrginData;
m_pOrginData = NULL;
}
m_pOrginData = new BYTE*[m_totalSize];
ZeroMemory(m_pOrginData, m_totalSize * sizeof(BYTE*));
空间释放如下:
if( NULL != m_pOrginData )
{
for ( UINT i = 0; i < m_totalSize; i++ )
{
if( NULL != m_pOrginData[i])
{
delete []m_pOrginData[i];
}
}
delete []m_pOrginData;
m_pOrginData = NULL;
}
无论空间的申请上还是空间的释放上,感觉还是没有问题的,从网上搜了看了一下,也有类似的提示错误。端点执行跟踪,发现错误发生在 delete []m_pOrginData[i]; 这一句,但从语法和使用上看没有问题,后经过仔细查找在其使用上越界写入数据。通过这个错误,感觉对内存的使用应当小心。当出现错误时应当察看内存的地址,一旦发生非法写入会引起内存的混乱。