【发布时间】:2014-10-08 21:04:41
【问题描述】:
我在尝试使用一个 cpp 文件并尝试使用 Valgrind 定位错误时遇到分段错误,但我很困惑。
由于代码很大,下面只放一小部分:
【问题讨论】:
-
附带说明:您确定您的实验室可以准确地发布代码吗?此外,我只会发布与您发布的错误消息相关的代码。您没有发布与任何代码相关的错误。啊。杰里米的回答更快:)
-
所有那些“???”只能表示你没有在调试模式下编译它。
-
你正在做这样的事情:
int nV = geo.getNumVerts(); for(int i=0; i<nV; i++) {canDecimate[i] = 0;但我不知道canDecimate是否至少有nV项。如果有任何问题可能导致问题,它会为两个不同的容器/数组使用单个上限值。 -
@csx - 您的代码通常只是假设值在“范围内”。换句话说,您的代码不会进行任何错误检查。要修复它,您需要在代码中进行必要的检查,以确保您正在访问范围内的项目。您再次将其添加到您的帖子
int tri = *iter; if(triann[tri].a != v),不检查*iter是否在范围内(假设triann是数组、向量或类似类型)。
标签: c++ vector iterator segmentation-fault valgrind