![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
![]() |
![]() |
![]() |
#12 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
Процесс единолично владеет своим виртуальным пространством памяти, но при этом, какие то области памяти могут являться частной собственностью имен объектов приложения, а какие то области являются "свободными". Автор имел ввиду: "как операционка узнает, о факте порчи памяти?" Я точно не знаю, но подозреваю, что возможные механизмы контроля вшиваются в исполняемый код приложения, средствами компилятора. В 2008 студии код вида: Код:
Однажды, в QtCreator в большом проекте, подобная ошибка привела его к поломке работы с сетью. В результате приложение выдавало что-то вроде "сервер не доступен". Было это в выходной день, и я реально даже подумал: "может они там сервак на выходные отключили?" Я потратил несколько часов, что бы найти такую ошибку. Последний раз редактировалось _Bers; 05.08.2012 в 19:22. |
|
![]() |
![]() |
![]() |
#13 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
Формально "чужой" памяти нет - все 4Г ваши но за пределы отпущеного вы не вылезете - "чужие" участки памяти защищены от доступа на уровне железа - операционке остается только ловить сигналы и убивать ваш процес. Когда вы вылезаете за "пределы" "вашей" памяти, операционке по барабану, т.е. она даже не пытается об этом узнавать.
|
![]() |
![]() |
![]() |
#14 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
Откуда операционка узнает, что данный процесс больше не работоспособный? |
|
![]() |
![]() |
![]() |
#15 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
Цитата:
а так, тут нет выхода за пределы страницы(минимальное выделение виртуальной памяти идет страницами), потому на самом деле не каждый левый указатель даст AV. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
![]() |
![]() |
![]() |
#16 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#17 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
ОС, орет об AV если та страница недоступна, а вы туда пишете. повреждения кучи ОС отследить не может в общем то. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
![]() |
![]() |
![]() |
#18 | |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]() Цитата:
Вообще что такое "крякнул" - пока вы пишете в память, которая никем не исползуется проблем собственно нет, проблемы начинаются, когда вы пишете в чужую память. Мне случалось вызывать проверку кучи после *каждой* операции с указателем и/или вызова фунцкии меняющей память, лиш бы поймать момент. |
|
![]() |
![]() |
![]() |
#19 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
у нас виртуальная память, деленная на страницы. есть три вида страниц(ну их больше, но интересует лишь три): 1)доступная на запись/чтение, в них пишем и читаем все ок. 2)доступная на чтение, при попытке записи будет AV. 3)не распределенная(или системная), при любом доступе будет AV. Цитата:
попадая на страницу 2/3 процессор генерирует исключение(по точнее могу вычитать в принципе), по нему ОС знает кто/куда. ну и прибивает процесс. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 05.08.2012 в 22:57. |
||
![]() |
![]() |
![]() |
#20 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
"чужая паметь" - та, которую не мы выделили...
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Безопасность | e_e_n | Безопасность, Шифрование | 40 | 03.09.2010 01:11 |
Безопасность | x_AN777 | Помощь студентам | 2 | 08.05.2010 23:30 |
Безопасность | xap4o | PHP | 4 | 15.02.2010 00:02 |