Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575

Сбой компьютера от неправильного кода С++

31.12.2010, 17:43. Показов 2126. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Читал книгу про массивы в С++ и вот что вычитал:

Вы должны соблюдать осторожность, чтобы не выйти за верхнюю границу массива. Одним из мощных средств С++ является прямой доступ к памяти. В силу этого С++ не запрещает запись в любой участок памяти, даже если эту память не предполагалось использовать в процессе выполнения программы. Следующим код вполне допустим, но он приведёт к краху вашей программы (или Windows):
C++
1
2
int array[5];
array[5] = 10;
Это распространённая ошибка: вы полагаете, что последний элемент массива 5, тогда как на самом деле это 4. При выходе за границу массива вы не сможете узнать, какой участок памяти был изменён, и в лучшем случае результат будет непредсказуемым. В худшем же случае произойдёт крах программы, а возможно даже и Windows. Ошибку такого типа бывает трудно обнаружить, посколько часто к изменённому участку памяти долгое время не происходит обращения, и крах наступает гороздо позже (оставляя вас недоумевать, что же случилось).

У меня такие вопросы:
  1. Действительно может произойти сбой Windows?
  2. Возможно ли предотвращение этой ошибки в Borland (после прочтения этого текста, нет желания проверять это на практике)?
  3. Кто-нибудь сталкивался с такой ошибкой в своей практике и какие были последствия?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.12.2010, 17:43
Ответы с готовыми решениями:

Программа валится из-за неправильного кода, в чем ошибка?
package com.example.ftmv1; import android.app.Activity; import android.os.Bundle; import android.widget.EditText; import...

Вылетает при компиляции неправильного кода, вместо выдачи ошибки
type TExample<T> = class event f: Action<T>; // Обязательно здесь должен стоять тип, состоящий только из T. ...

Резкий сбой в работе компьютера
Здравствуйте. Сегодня, после попытки просмотра ролика в в одноклассниках(естественно политического), компьютер стал тормозить, зависать и...

14
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
31.12.2010, 17:58
Такие "ошибки" на практике встречаются очень часто, не бойтесь, к краху Винды это не приведет) Современные Windows'ы (про другие ОС не знаю) умеют обрабатывать подобные ситуации, и просто не дадут записать, что-то туда, куда не следует). А вот в старых ОС Windows (по моему до Windows 95 или 98) такой код мог вполне повлиять на работу системы.
1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
31.12.2010, 18:00
Не беспокойтесь, если и может затереться что-то важное в памяти, то вероятность крайне мала. Максимум, что вы можете ожидать - программа закроется с Run-Time Error. Если не прав, конечно, поправьте, но сколько я в своей жизни выходил за границы массива (да простит меня Страуструп), это никогда не вешало систему.

Добавлено через 1 минуту
Да, вроде в 95 винде можно было творить чудеса с помощью корявых рук)))
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
31.12.2010, 19:52
Цитата Сообщение от Busine2009 Посмотреть сообщение
Возможно ли предотвращение этой ошибки в Borland
в древнем Туро С++ 3.1 - НЕТ, но даже если такое и произойдет то это никак не повлияет на саму винду(кроме как уже говорилось 95, 98), максимум Турбо закроется и пропадет несохраненный код.
1
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
31.12.2010, 20:09  [ТС]
У меня Borland C++ Builder 6.
Windows XP Professional.
0
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,307
31.12.2010, 21:14
Цитата Сообщение от Busine2009 Посмотреть сообщение
В худшем же случае произойдёт крах программы, а возможно даже и Windows.
Крах программы вполне ожидаем, а вот чтобы виндовс навернуть эт перебор. Все программы под виндой выполняются кажая в своем адресном пространстве и игрой с указателями выйти за это пространство не возможно.
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
31.12.2010, 21:22
Обычно, если по тому адресу ничего особенного не находится, но и ничего не произойдет. Если там память другого приложения, то будет run-time error
0
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
31.12.2010, 22:03
Люди,вот не знаю...я когда открывал свою программу(ехе) и после того как закрывал ее,весь комп зависал...даже когда нажимал на Num Lock, свет не пропадал на клаве...
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
31.12.2010, 22:50
^Tecktonik_KiLLeR, хреновая программа
0
01.01.2011, 10:00

Не по теме:

^Tecktonik_KiLLeR, у меня на днях был случай - программа в вечном цикле (случайно, я не хотел))) устанавливала курсор в определенное место и кликала мышью. У меня на компе постоянно запущена такая вещь - индикатор загрузки ЦП, я сморю ЦП загружен на 100% и при всем желании я ни чего не могу сделать, мышь кликает в одном месте, я ей даже пошевелить не могу)))(спасло переполнене стека в этом цикле, программа рухнула))
Это я к тому, что если при запуске твоей программы система наглухо виснет, это не значит, что ты пару байт не туда, куда надо записал, причина может быть любая)

0
01.01.2011, 10:02

Не по теме:

Kastaneda, это твой бот для флэш-игры поработал? ;)

0
Maniac
Эксперт С++
 Аватар для ISergey
1465 / 966 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
01.01.2011, 10:14
C++
1
Действительно может произойти сбой Windows?
Может, если писать код на уровне ядра ОС (драйвера к примеру).
Цитата Сообщение от Busine2009 Посмотреть сообщение
Возможно ли предотвращение этой ошибки в Borland (после прочтения этого текста, нет желания проверять это на практике)?
Можно написать свой класс для массивов и в нем контролировать доступ..
0
01.01.2011, 10:40

Не по теме:

silent_1991, ага :D

0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
01.01.2011, 14:29
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
Люди,вот не знаю...я когда открывал свою программу(ехе) и после того как закрывал ее,весь комп зависал...даже когда нажимал на Num Lock, свет не пропадал на клаве...
Мечтаю грохнуть ось
Автор, дай код пожалуйста!
...А вообще я где-то чуть меньше года назад сталкивался с похожей ситуацией, но вроде разобрался. Там, короче прога работала-работала и чё-то всё остальное тормозило к матери. Но это я разобрался потом, отчего. Это оттого, что очень много занимал оперативной памяти. Пришлось вручную её увеличивать (файл подкачки или как его там), лезть в настройки винды.

Так, а теперь если не побеспокоиться о том, чтобы по окончании прога освобождала ресурсы, то ось, конечно, по окончании процесса сама их освободит, но когдааааа это будет ещё. И происходит: процесс убиен, а ресурсы (тем более, если очень много занято, как у меня, к примеру было) только-только освобождаются и все остальные проги тормозят.
0
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
01.01.2011, 17:41
kravam, кода уже нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.01.2011, 17:41
Помогаю со студенческими работами здесь

Сбой доступа у компьютера домена
Дано: сетка в домене, контроллеров домена два: основной и резервный, на базе Windows Server 2012 Datacenter. Кроме них еще 2 сервера:...

Сбой питания компьютера при установке памяти
Обе планки памяти новые,куплены парой,рабочие,подобраны в соответствии с характеристиками процессора и материнской платы. При поочерёдной...

После последнего обновления Windows произошел сбой в работе компьютера.
Здравствуйте. Позавчера было обновление Windows, после чего перестали открываться страницы. Работу ОС я восстановила, но интересно было...

При выключении компьютера ошибка - "Сбой приложения dwwin.exe"
Виндовоз слетает конкретно... Сначала он безпричинно расширял файл подкачки на диске, где я его вообще вырубил, и после расширения...

Сбой в компьютере, время от времени синий экран смерти, критический сбой
Добрый день форумчане. Столкнулся с такой проблемой, компьютер уже во второй раз выдает критический сбой, и кидает на синий экран...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru