¿Es segura la lectura desde la memoria no asignada?

¿Es seguro leer desde una dirección aleatoria? Sé que escribir es un comportamiento indefinido, pero ¿qué hay de solo lectura?

Bueno, en muchos depuradores visuales, puedo ver el contenido de la memoria en una dirección arbitraria. ¿Cómo se hace esto?

Como el comportamiento no está definido, la respuesta no está definida, o al menos es errática.

Si tienes suerte y la dirección aleatoria está dentro de los límites de la memoria de tu progtwig, sería bueno leer lo más probable y obtendrías basura aleatoria.

Si está fuera del scope (es decir, 0x0 / NULL), lo más probable es que tenga un error de segmentación (aunque, de nuevo, esto no está garantizado) que terminaría su progtwig. Si lo considerara “seguro”, entonces sí , De otra manera no.

No, no es seguro. Incluso si no le importa que el valor sea definido o exacto, existe una IO mapeada en memoria, por lo que una dirección aleatoria podría interactuar con el hardware periférico. Hice eso en los días previos a la memoria protegida, y sí, puede derribar el sistema.

Hoy en día, dependiendo de su sistema, esperaría ver una falta de seguridad para direcciones fuera de su espacio de proceso. Sin esa protección, una aplicación incorrecta podría acceder a datos valiosos, como contraseñas, información de tarjetas de crédito, etc. cuando se utiliza en una buena aplicación.

Además, las direcciones que ve en el depurador probablemente no sean direcciones físicas reales. En su lugar, probablemente solo veas direcciones de memoria virtual.