Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Ошибка в логике программы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Комбинирование ключа из несколько слов http://www.cyberforum.ru/cpp-beginners/thread922687.html
Здравствуйте. Столкнулся с проблемой Комбинирования ключей из несколько слов. В моем варианте было предложено: Если ключ состоит из нескольких слов, то перед вычислением хеш-функции должно быть...
C++ Непонятный вызов конструктора класса Почему в строчке d1=500; (70 стр.) вызывается конструктор CDate(500, 1, 2000)? Получается, целое число 500 перед присваиванием каким то образом преобразуется в тип CDate. Но почему? Вот это мне не... http://www.cyberforum.ru/cpp-beginners/thread922686.html
Как вытащить исходник из exe, написанного на C# C++
Есть бэкдор, написанный на C# (для работы нужен NetFramework). Фишка в том, что когда ты его запускаешь, твой айпи отсылается автору. И вот мне нужно выскрыть exe-шник чтобы править код, чтобы...
Передача функционального объекта в функцию C++
Здорова! Никак не могу передать функциональный объект в функцию. От примерчик, функция передается нормально, а объект нет. #include <iostream> using std::cout; using std::endl; #include...
C++ Функция strcmp http://www.cyberforum.ru/cpp-beginners/thread922670.html
Имеется три числа num1, num2 и det. Как используя функцию strcmp определить принадлежит ли число det, промежутку num1, num2?
C++ Выделение памяти на стеке Добрый день. Часто в учебниках и на форуме я встречал такое выражение как "переменная создаётся в (или на) стеке". Мне непонятно, что это значит. Ведь к стеку мы обращаемся через push ax pop ax... подробнее

Показать сообщение отдельно
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.07.2013, 00:58
В своём коде я эту ошибку исправил, но вы её сохранили.
C++
1
char choice[1];
Так под строку память не выделяют. Это равнозначно:
C++
1
char choice;
Потом, в коде, в этот массив, созданный под одну char, cin читае строку:
C++
1
cin >> choice;
Получая, в качестве переменной для чтения, указатель на массив char, сin добавляет, в конец введённого, '\0'. В вашем случае (при вводе одного символа), этот терминальный ноль помещается уже за границу объявленного массива. Поэтому и ошибка появляется. Разные компиляторы такое по разному обрабатывают, но это всё равно ошибка: выход за границу массива. В самом языке, это не контролируется, но тот кто пишет код, должен за этим следить.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru