Тип данных Изменение и разрыв в очень странной строке

Итак, у меня есть эта матрица из библиотеки Eigen.

Eigen::MatrixXd

И он заполнен данными и составляет 4х3900 баллов. Он используется в функции, которая имеет следующие строки:

Теперь матрица даже не используется в этом наборе кода, и для справки она называется modelPointCloud.
Используя GDB, я перебираю строки на изображении. Для workIndex а также tid В строке матрицы указан правильный размер (т.е. 4х3900). Но когда я перехожу к следующей строке (idTableLock) это все еще хорошо, но когда я выполняю эту строку, вдруг матрица меняется на 0x167, что происходит каждый раз, но, по-видимому, является случайным числом.

Теперь из-за этого я получаю эту ошибку:

введите описание изображения здесь

На этой линии:

Что имеет смысл, потому что матрицы больше не имеют правильный размер.

Теперь другие потоки работают, но ни у кого не должно быть доступа к этому типу данных. Кто-нибудь имеет представление о том, почему это происходит? Почему именно эта линия меняет матрицу?

0

Решение

Я думаю, что это не имеет ничего общего с Эйгеном. Для меня это звучит как повреждение памяти. Вы не можете напрямую обращаться к памяти через переменную modelPointCloud, но, скорее всего, делаете запись в память, которая содержит размер матрицы. Эти типы ошибок довольно сложно отлаживать. Вероятно, вы где-то используете индекс вне границ. Посмотри на других сообщений на эту тему.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]