В следующем коде в моей программе (упрощенно, конечно) выходные данные в funcA и funcB различаются, что означает, что значение указателя было изменено где-то по пути.Я не смог подтвердить, что адрес face
изменился, так как эта ошибка волшебным образом не появляется в отладчике (отладчик QT Creator).Но вот код:
void funcA() {
Face *face = funcB();
if (face != NULL) {
cout << "in funcA " << face->vertices[0] << endl;
}
}
Face * funcB() {
vector<Face> faces;
//populate faces
...
Face *face = &(faces[index]);
cout << "in funcB " << face->vertices[0] << endl;
return face;
}
Хотя вывод меняется в зависимости от того, где щелкает моя мышь, вывод в двух функциях выше сильно отличается (в funcB это будет, например, 30, а в funcA это станет18117600 ... У меня всего 60 лиц!) Кроме того, кажется, что он появляется случайно, а не постоянно.
Любая помощь будет принята с благодарностью.