Anche m_faces è un array va distrutto con delete[], altrimenti il comportamento è indefinito.
codice:
if(m_faces)
{
for(int i = 0;i < m_nDeleteFacesCount;i++)
{
delete[] m_faces[i].pIndex;
}
delete[] m_faces;
}
E il ciclo for era sbagliato: i < size, non i<=size o il comportamento è indefinito.
codice:
void CPolygonData::addFace(int idx[],int idxNormal[])
{
FACE face;
NORMAL normal;
int size = _msize( idx )/sizeof(int); ;
face.pIndex = new INDEX[size];
for (int i = 0; i <size ;i++){
face.pIndex[i].nVertex = idx[i];
face.nCount = size;
}
m_faces[m_nFacesCount] = face;
m_nFacesCount ++;
}