二级指针的使用错误解决一例

        在使用二级指针操作是出现了下面的提示:

        感觉我的指针在申请空间和释放空间上没有什么问题。

        定义如下:

       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];   这一句,但从语法和使用上看没有问题,后经过仔细查找在其使用上越界写入数据。通过这个错误,感觉对内存的使用应当小心。当出现错误时应当察看内存的地址,一旦发生非法写入会引起内存的混乱。

你可能感兴趣的:(null,delete,byte)