Здравствуйте Al-Ko, Вы писали:
AK>template<class TYPE>
AK>void AKVector<TYPE>::Append(long nCount /* = 1 */)
AK> {
AK> long nNewSize = m_nSize + nCount;
AK>
AK> TYPE* pNewData = new TYPE[nNewSize];
---
AK> if(m_nSize > 0){
AK> memmove(pNewData, m_pData, m_nSize * sizeof(TYPE));
--------
AK> delete [] m_pData;
-------
AK> }
AK> m_nSize = nNewSize;
AK> m_pData = pNewData;
AK> }
Взрывоопасная смесь new[]+memmove+delete[].
И как оно только у тебя работает, особенно на двумерных массивах!
Было, допустим 10 объектов TYPE в m_pData, их скопировали ПОБАЙТНО в pNewData через memmove(), удалили деструторами в delete[] m_pData и продолжаем ими пользоваться после m_pData = pNewData.
Это будет работать более-менее с классами без деструкторов, но с деструкторами, ИМХО, вылетит напрочь.
Обычно удаляют память просто через delete (void*) m_pData, чтобы не вызывать деструкторы.