gpt4 book ai didi

c++ - 普通 C++ vector 中的神秘段错误

转载 作者:行者123 更新时间:2023-11-28 07:12:51 26 4
gpt4 key购买 nike

我想在某些迭代中在此方法中为 vector p->vertexlist 赋值,并且在 j= 3 和 i = 2 时出现内存问题(在 for 迭代中)

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

这是一个Mysterious

最佳答案

注意:我们被告知 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 现在是 f->polygonlistthird (i == 2) 多边形的地址>。哦,但是 f->polygonlist 指向一个大小为 1 的数组。

关于c++ - 普通 C++ vector 中的神秘段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20714930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com