Повреждение кучи при построении дерева AABB с помощью OPENMP - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть для l oop, содержащее приблизительно 1 000 000 итераций вызова метода AABBTree.all_intersections () . Таким образом, я использую # pragma omp parallel для , чтобы ускорить программу. Тем не менее, я получил сообщение об ошибке «Куча была повреждена». Файл cpp выглядит примерно так:

Polyhedron polyhedron;
Facet_tree m_facet_tree(faces(m_polyhedron).first, faces(m_polyhedron).second, m_polyhedon);

#pragma omp parallel for
for (int i = 0; i<100; ++i){
    Plane plane = Plane(1, 0, 0, 0);

    // Compute intersections
    typedef std::vector<Facet_tree::Object_and_primitive_id> Intersections;
    Intersections intersections;
    m_facet_tree.all_intersections(plane, std::back_inserter(intersections));
}

Наконец, программа прекратит работу:

    ~Handle()
    {
    if ( PTR && (--PTR->count == 0))
        delete PTR;
    }

Каковы возможные причины этой проблемы? Большое спасибо!

...