Наиболее вероятная проблема - доступ к массиву за пределами.Существуют такие инструменты, как valgrind
, которые могут обнаружить это без изменений кода.Другие возможности включают пошаговое выполнение кода с помощью отладчика или добавление assert
s до всех обращений к массиву.
Другая возможность - перейти от использования простого массива к использованию std::vector
из std::vector
s.или некоторая другая коллекция C ++, которая может легко поддерживать проверку границ.
Другая возможность состоит в том, что height
и width
просто очень велики, так что массив требует доступа к большему объему памяти, чем ваша платформа может получить настек.Хорошей идеей будет переключение на динамическое распределение или что-то, что может привести к ошибке, если памяти недостаточно, а не происходит сбой.Вы также можете начать с регистрации их, чтобы увидеть, является ли это вероятной проблемой.
Я бы посоветовал не размещать такие массивы в стеке, потому что разные платформы имеют разные ограничения по размеру стека.Так что это делает ваш код хрупким, даже если он работает.