Нет, это не безопасно. Даже если вы не заботитесь о том, чтобы значение было определено или точным, есть такая вещь, как память, отображаемая IO, поэтому случайный адрес может взаимодействовать с периферийным оборудованием. Я сделал это за несколько дней до защищенной памяти, и да, это может сбить систему.
В настоящее время, в зависимости от вашей системы, я ожидаю увидеть segfault для адресов вне вашего пространства процесса. Без этой защиты плохое приложение может получить доступ к ценным данным, таким как пароли, данные кредитной карты и т. Д., Когда используется в хорошем приложении.
Кроме того, адреса, которые вы видите в отладчике, скорее всего, не являются реальными физическими адресами. Вместо этого вы, вероятно, видите только адреса виртуальной памяти.
нет. он не определен и, вероятно, вызовет segfault. он показывает, потому что текущая страница фактически распределена процессу, в смысле ОС. – HuStmpHrrr
Нет. Чтение на случайном адресе в большинстве случаев вызывает ошибку сегментации, поскольку она будет за пределами границ сегментов, которые операционные системы зарезервировали для выполнения вашего процесса. –
Отладчик может знать больше о базовой системе, чем вы можете смело предположить в коде C. Или вы просто получите «повезло». Чтение с произвольного адреса * может случиться «работать». –