Повлияет ли неиспользуемый код на компиляцию сборки выпуска?
Да.Как этот ответ SO объясняет, Visual C ++ сохраняет неиспользуемые функции, которые не помечены как встроенные.
Похоже ли это на ошибку Visual Studio?
Это маловероятно, как я объясню в ответе на ваш следующий вопрос.Эрик Липперт объясняет , что, поскольку компилятор используется так часто, что легко обнаруживаемые и обнаруживаемые ошибки уже найдены и исправлены, на 1015 * гораздо более вероятно, что ошибка присутствует в вашем кодечем эта ошибка в компиляторе C ++.
Я только что нашел действительно убедительную красную сельдь?
Да, я думаю, что вы сделали.Не видя кода для рисования поля астероидов, я не могу быть уверен, но, вероятно, вы где-то там разыменовываете плохой указатель.Теперь он начинает понимать, на какие данные указывает указатель.
Когда неиспользуемый класс включается в скомпилированную сборку, объем памяти, выделяемой вашему коду, увеличивается, что означает, что ваша куча должна начинаться выше в памяти,и куча вещей переместится на более высокие адреса.Это означает, что неверный указатель может указывать на разные данные в зависимости от того, скомпилирован ли неиспользуемый класс в исполняемый файл или нет.Когда вы разыменовываете этот указатель, вы получаете разные результаты.Вот почему удаление кода «исправляет» ошибку - всякий раз, когда вы убираете неиспользуемый класс, плохой указатель указывает на нужные вам данные, а не на другие данные.Как справедливо отмечает @awoodland в комментариях, вы действительно неудачливы без неиспользуемого класса и вам повезло с ним, потому что вы не можете найти ошибку, которая может проявиться во всевозможных странных способах, как только вы начнетераспространение кода среди ваших друзей (или клиентов, если это коммерческий продукт).Такие ошибки типа «плохой указатель, который случается, работают» могут легко привести к тому, что ваш код будет работать корректно на некоторых машинах и резко потерпеть неудачу на других машинах, что очень трудно отладить.Лучше, если вы нашли ошибку сейчас, чем позже.