Функция ENTT реестра.emplace<>() вызывает ошибку сегментации компонента с логическим значением [закрыто] ⇐ C++
Функция ENTT реестра.emplace<>() вызывает ошибку сегментации компонента с логическим значением [закрыто]
Я писал небольшую реализацию шахмат для тренировки с entt и ncurses и столкнулся с проблемой, о которой даже не знаю, что делать.
По сути, при реализации ходов я просматриваю выбранные части, чтобы определить набор ходов, который они могут использовать. Идея заключалась в том, чтобы сохранить ходы в векторе и показать его. Однако при попытке push_back в вектор выдается ошибка сегмента.
// получаем ходы auto selected_view = reg.view(); std::vector перемещается; for (auto [ent, Piece, P, Pawn]: selected_view.each()) { если(!pawn.has_moved) { moving.push_back(новая позиция{1, 0}); // это сбой } } Это исчезнет, если я удалю оператор if
// получаем ходы auto selected_view = reg.view(); std::vector перемещается; for (auto [ent, Piece, P, Pawn]: selected_view.each()) { moving.push_back(новая позиция{1, 0}); // это отлично } Я попробовал построить его в режиме отладки, чтобы пройти через него, но при этом, конечно, все сработало так, как я и ожидал. Я предполагаю, что это означает, что я делаю что-то, вызывающее неопределенное поведение.
Однако я не могу понять, что является причиной этого, я бы предположил, что он хранится в куче, и вектор следит за ним, но явно нет. То же самое происходит и с вектором структур.
Если кто-нибудь сможет мне помочь, я буду очень признателен.
Используется система Ubuntu 22.04, для компиляции используется g++.
РЕДАКТИРОВАТЬ: Итак, после нескольких часов отладки, вывода журнала valgrind и удаления достаточного количества кода, чтобы сократить его до десяти строк, я наконец понял, что проблема заключалась в том, что при компиляции осталась куча ненужных файлов .o и .hpp.gch, которые были вызывая проблему связывания, следовательно, проблемы с памятью. После их удаления и перекомпиляции/запуска все снова заработало.
Приносим извинения за беспокойство и благодарим всех, кто нашел время, чтобы поделиться идеями.
Я писал небольшую реализацию шахмат для тренировки с entt и ncurses и столкнулся с проблемой, о которой даже не знаю, что делать.
По сути, при реализации ходов я просматриваю выбранные части, чтобы определить набор ходов, который они могут использовать. Идея заключалась в том, чтобы сохранить ходы в векторе и показать его. Однако при попытке push_back в вектор выдается ошибка сегмента.
// получаем ходы auto selected_view = reg.view(); std::vector перемещается; for (auto [ent, Piece, P, Pawn]: selected_view.each()) { если(!pawn.has_moved) { moving.push_back(новая позиция{1, 0}); // это сбой } } Это исчезнет, если я удалю оператор if
// получаем ходы auto selected_view = reg.view(); std::vector перемещается; for (auto [ent, Piece, P, Pawn]: selected_view.each()) { moving.push_back(новая позиция{1, 0}); // это отлично } Я попробовал построить его в режиме отладки, чтобы пройти через него, но при этом, конечно, все сработало так, как я и ожидал. Я предполагаю, что это означает, что я делаю что-то, вызывающее неопределенное поведение.
Однако я не могу понять, что является причиной этого, я бы предположил, что он хранится в куче, и вектор следит за ним, но явно нет. То же самое происходит и с вектором структур.
Если кто-нибудь сможет мне помочь, я буду очень признателен.
Используется система Ubuntu 22.04, для компиляции используется g++.
РЕДАКТИРОВАТЬ: Итак, после нескольких часов отладки, вывода журнала valgrind и удаления достаточного количества кода, чтобы сократить его до десяти строк, я наконец понял, что проблема заключалась в том, что при компиляции осталась куча ненужных файлов .o и .hpp.gch, которые были вызывая проблему связывания, следовательно, проблемы с памятью. После их удаления и перекомпиляции/запуска все снова заработало.
Приносим извинения за беспокойство и благодарим всех, кто нашел время, чтобы поделиться идеями.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Можно ли добавить вариант STD :: в качестве компонента в сущность в ENTT?
Anonymous » » в форуме C++ - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как сопоставить CHAR(1) с логическим значением с помощью Hibernate для Java?
Anonymous » » в форуме JAVA - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Невозможно сделать поле статическим окончательным логическим значением java.math.BigDecimal
Anonymous » » в форуме JAVA - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Невозможно вызвать IntentSenderRequest.Builder() с логическим значением
Anonymous » » в форуме Android - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Невозможно вызвать IntentSenderRequest.Builder() с логическим значением
Anonymous » » в форуме Android - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-