Для отладки программы необходимо приостанавливать работу программы, порционно выводить некоторую информацию на экран и затем по команде заново продолжать работу (это для отладки, выводится визуализация некоторых данных, поэтому брейтпоинты и т.д. не помогут).
Сначала для остановки и запуска использовал _getch(), но после первой остановки и запуска программа второй раз _getch() игнорировала и останавливалась только на третьем, четвертый игнорировала, останавливалась на пятом и т.д.
Тогда заменил _getch() на std::in >> value, но там ситуация еще более странная - первый std::in срабатывает, следующие игнорируются напрочь (тоже самое и для связки std::in и _getch() - после первого std::in все остальное игрорируется).
Подскажите в чём может быть дело?
У меня скорее всего происходил запись за пределы выделенной памяти (ее и ищу) - может ли это приводить к таким результатам? Или я что-то не так вызываю?
P.S.
Код слишком большой, чтобы из него выделить некоторый самодостаточный воспроизводимый кусок, но вызов выглядит так:
void myfunc()
{
std::cout << std::endl;
show_debug(true, position);
std::cout << std::endl;
_getch();
myfunc(); // у меня вложенные вызовы, но не глубокие (глубина до 4)
}
даже, если сделать так:
std::cout << std::endl;
std::cout << '*' << std::endl;
_getch();
будет воспроизводиться по 2 *
P.P.S.
Заметил, что в DEBUG такая проблема исчезает (точно куда-то течет!)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости