таинственная ошибка сегментации в тривиальном векторе C ++

0

Я хочу назначить значения вектора p-> vertexlist в этом методе на некоторой итерации и имеет проблемы с памятью, когда j = 3 и я = 2 (в итерациях)

void py_tetgenio::set_facets(bp::list python_facets) {

this->numberoffacets = bp::len(python_facets);
this->facetlist = new tetgenio::facet[this->numberoffacets];
this->facetmarkerlist = new int[this->numberoffacets];

for (int i = 0; i < this->numberoffacets; i++) {
    //iterar por sobre la lista agregando cada uno de los
    //identificadores a cada uno de los facets
    bp::list facet = bp::extract<bp::list>(python_facets[i]);

    tetgenio::facet *f = &this->facetlist[i];
    f->numberofpolygons = 1;
    f->polygonlist = new tetgenio::polygon[f->numberofpolygons];
    f->numberofholes = 0;
    f->holelist = NULL;
    tetgenio::polygon *p = &f->polygonlist[i];

    //iterar por sobre la lista de los id de los nodos
    //almacenados en la lista que representa al facets

    p->numberofvertices = bp::len(facet);
    p->vertexlist = new int[p->numberofvertices];

    for (int j = 0; j < p->numberofvertices; j++) {
        int aux = bp::extract<int>(facet[j]);
        p->vertexlist[j] = aux; // SIGSEV:  Segmentation Fault!!! when j=3 
                                            // and i = 2
    }
    this->facetmarkerlist[i] = 1;
}
} //end set_facets

это таинственный

  • 3
    Пожалуйста, постройте минимальный тест-кейс .
  • 0
    Я могу выложить здесь изображения отладчика затмения
Показать ещё 2 комментария
Теги:
arrays
segmentation-fault
boost-python

1 ответ

1
Лучший ответ

Примечание: нам говорят, что i 2.

f->numberofpolygons = 1;
f->polygonlist = new tetgenio::polygon[f->numberofpolygons];

Теперь f->polygonlist указывает на массив размером 1.

// Two irrelevant statements skipped
tetgenio::polygon *p = &f->polygonlist[i];

p теперь является адресом третьего (i == 2) многоугольника в f->polygonlist. О, но f->polygonlist указывает на массив размером 1.

  • 0
    Продай мне свои глаза!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню