2016-06-22 10 views
0

Я читаю о коде unsafe, в основном для работы с растровыми изображениями. Однако я не могу найти объяснения пределов неясности. Я понимаю, что использование указателей на массиве не будет проверяться, поэтому я могу попытаться получить доступ к памяти за пределами ее границ. Все идет нормально. Но что, если я сделать доступ к этой памяти. Что происходит? Могу ли я изменить значения других переменных? Или даже изменить двоичный код программы? Или просто поднять исключение?Насколько опасный код является небезопасным?

Я хотел бы знать, что может быть хуже всего, прежде чем я решит использовать небезопасный код.

+2

Неопределенное поведение. Вы не можете предсказать, что может случиться с какой-либо степенью уверенности, не зная точного контекста, в котором работает ваша программа. – itsme86

+0

@ itsme86 Спасибо. Я предполагаю, однако, что существуют некоторые известные пределы. Например, мой код не может получить доступ к памяти, зарезервированной для других процессов на компьютере, поэтому он не может сбой других программ или операционной системы. Правильно? (Не включая использование ресурсов. Я имею в виду - он не может изменить их пространство памяти. Это правильно?) – ispiro

+0

Будет ли этот вопрос более подходящим для [Programmers StackExhcange] (http://programmers.stackexchange.com/)? В противном случае, хороший вопрос :) – Roman

ответ

0

Небезопасный код может привести к утечкам памяти или другим случайным ошибкам. Небезопасный код небезопасен по какой-либо причине. Например, в C++ у вас были указатели, и они в основном указывали на куски памяти на физической машине. Есть много разных вещей, которые могут пойти не так с указателем, что лучше не использовать их, если вы не уверены, что делаете. Я думаю, что то же самое можно сказать о небезопасном коде в C#. itsme86 прав, это очень непредсказуемо.

Смежные вопросы