De acuerdo con this reddit comment thread, no está definido si se intenta leer la memoria antes de que se haya escrito. Me refiero a la memoria de pila normal que ha sido exitosamente malloc
ed.leer antes de escribir no está definido con memoria mallada?
... cuenta que esto no es estrictamente válida C: se permite que el sistema de compilador/tiempo de ejecución para inicializar la memoria sin inicializar con los llamados representaciones trampa, lo que causa un comportamiento indefinido en el acceso.
Encuentro esto difícil de creer. ¿Hay una cita estándar?
Por supuesto, entiendo que no hay garantía de que la memoria se haya reducido a cero. Los valores en esta memoria no inicializada son esencialmente pseudoaleatorios o arbitrarios. Pero realmente no puedo creer que el estándar se refiera a esto como comportamiento indefinido (en el sentido de que podría segfault, o eliminar todos sus archivos, o lo que sea). El resto del hilo de reddit no arrojó más luz sobre este tema.
Erm, ¿qué crees que significa comportamiento indefinido? (Sí, usar la memoria asignada antes de que se haya inicializado produce un comportamiento indefinido) –
@Brian Supongo que está preguntando si todo el comportamiento (es decir, esta segfault) no está definido, o solo el valor que resultaría de la lectura. – Owen
@Owen, es cierto, he actualizado la pregunta en consecuencia. –