Я пытаюсь добавить набор новых ModelImages к вектору и получаю сообщение об ошибке «Отладочное утверждение не выполнено», выражение: _BLOCK_TYPE_IS_VALID (pHead-> nBlockUse).Это происходит при попытке удалить второй сгенерированный ModelImage.
std::vector<ModelImage> ModelImages;
for(int n=0;n<nParamSets;n++)
{
ModelImage* mI = new ModelImage(MOD_WIDTH,MOD_HEIGHT);
ModelImages.push_back(*mI);
delete mI;
}
Функции конструктора и деструктора, а также функции копирования и обмена выполняются следующим образом:
ModelImage(int _width, int _height)
{
width = _width;
height = _height;
nPixels = width*height;
distance = new float[nPixels];
intensity = new float[nPixels];
derivX = new float[nPixels];
derivY = new float[nPixels];
maxDistance = 0.0f;
minDistance = 0.0f;
}
~ModelImage()
{
delete [] derivX;
delete [] derivY;
delete [] distance;
delete [] intensity;
}
ModelImage& operator=(ModelImage other)
{
swap(*this, other);
return *this;
}
friend void swap(ModelImage& first, ModelImage& second)
{
using std::swap;
swap(first.derivX,second.derivX);
swap(first.derivY,second.derivY);
swap(first.distance,second.distance);
swap(first.intensity,second.intensity);
swap(first.nPixels,second.nPixels);
swap(first.width,second.width);
swap(first.height,second.height);
}
Непосредственно перед попыткойудалите второй ModelImage, глядя на вектор ModelImages показывает, что два ModelImages в векторе имеют одинаковые назначенные адреса памяти для массивов расстояния, интенсивности, DeriveX, производного.
Любая помощь приветствуется, спасибо.