Сбой в фигурной скобке: ошибка отладки утверждения

У меня есть кусок кода, который работает в режиме отладки в VS2008, C++. Проблема в том, что когда я отлаживаю код построчно, в очень странной точке кода он вылетает и говорит:

Ошибка утверждения отладки. Выражение: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

Точка краха находится на первой закрытой фигурной скобке (после mesh->edges[e].needsUpdate=false;) Не понимаю, почему на фигурной скобке? это имеет смысл для вас, ребята?

Что здесь происходит?

for(int e=0; e<mesh->edges.size(); e++)
{
    if(mesh->edges[e].valid && mesh->edges[e].v[0]>=0 && mesh->edges[e].v[1]>=0 &&
        mesh->points[mesh->edges[e].v[0]].writable && mesh->points[mesh->edges[e].v[1]].writable)
    {
        //update v_hat and its corresponding error
        DecEdge Current = DecEdge(e);
        pair<Point, float> ppf = computeVhat(e);
        Current.v_hat = ppf.first;
        Current.error = ppf.second;

        edgeSoup.push(Current);
        mesh->edges[e].needsUpdate=false;
    }
}

person Nima    schedule 02.06.2010    source источник
comment
Так что же с этим случилось???   -  person Romain Hippeau    schedule 07.06.2010


Ответы (3)


По моему опыту, сбои, происходящие на закрывающей фигурной скобке, означают, что сбой произошел в деструкторе, запущенном, когда блок вышел за пределы области видимости. Я бы проверил, что происходит в деструкторах для DecEdge и Point.

person Paul Kuliniewicz    schedule 02.06.2010

У вас есть некоторые библиотеки, скомпилированные в режиме DEBUG, а некоторые — в режиме RELEASE.

person Romain Hippeau    schedule 02.06.2010

Проверьте, не удалили ли вы какие-либо указатели, которые вы использовали. Это может быть причиной.

person ckv    schedule 02.06.2010