Сбой на фигурной скобке: сбой отладочного утверждения - PullRequest
1 голос
/ 02 июня 2010

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

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

Точка сбоя находится на первой закрытой фигурной скобке (после сетки-> ребра [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;
    }
}

Ответы [ 3 ]

1 голос
/ 02 июня 2010

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

0 голосов
/ 02 июня 2010

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

0 голосов
/ 02 июня 2010

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

...