Если я получу ошибку в Cygwin, как это повлияет? - PullRequest
2 голосов
/ 13 июля 2011

Я изучаю C ++, используя emacs на Cygwin, и слышал, что в старых операционных системах Unix segfault может полностью уничтожить критическую память.Я знаю, что одна идея Cygwin состояла в том, чтобы сделать Windows более похожей на Unix, поэтому, если я получу segfault на Cygwin, повредит ли это что-нибудь на Windows или Cygwin?

Ответы [ 2 ]

3 голосов
/ 13 июля 2011

Нет, это ничего не повредит. Это просто приведет к сбою приложения, которое вызвало ошибку segfault. И, вероятно, (в зависимости от версии и настроек Windows) вы получите всплывающее всплывающее сообщение, информирующее вас о сбое и спрашивающее, хотите ли вы сообщить об этом.

0 голосов
/ 13 июля 2011

В современных операционных системах (включая Linux, Win2K + и MacOSX) каждый процесс может получить доступ только к области «виртуальной памяти», которая управляется ОС и полностью очищается после окончания срока службы процесса. Ошибка доступа к памяти в части процесса, которая приводит к завершению процесса, просто означает, что процесс попытался получить доступ к части своего виртуального адресного пространства, о которой он не сообщил ОС и к которой ОС не хотела обрабатывать доступ. , но это не влияет ни на что, кроме этого одного процесса. Для процессов пользовательского пространства нет прямого доступа к «реальной» памяти, и, таким образом, вы не можете причинить огромный вред.

(Ладно, я не обращаю внимания на вещи, если вы случайно вызвали вызов API «kill» и у вас были права администратора, я полагаю, вы могли бы причинить некоторый вред. Но вы понимаете, о чем я .)

...