El problema del espacio de memoria asignado por la función malloc() en lenguaje C
El programa asignará espacio en la pila por adelantado cuando se esté ejecutando, por lo que es posible que su pregunta no necesariamente modifique lugares que no deben modificarse, pero puede que esté vacío.
Volviendo a malloc, malloc es el principal responsable de asignar espacio y devolver la primera dirección del espacio. Entonces, ¿por qué se pueden almacenar 7 caracteres cuando el espacio de la aplicación es 0? Esto se debe a que los punteros del lenguaje C no verifican los problemas fuera de límites de la matriz. Si no lo cree, puede hacer esto: char ch[5], y luego podrá leer y escribir ch[6] (printf o scanf), para que no haya errores. Pero cuando lo usemos, no cruce la línea, porque un programa así es muy peligroso. Imagínese, si la dirección utilizada fuera de límites resulta ser la dirección de un determinado sistema operativo, el sistema fallará tan pronto como lo modifique. Al mismo tiempo, este mecanismo del lenguaje C es ampliamente utilizado por piratas informáticos y ataques de desbordamiento de búfer, por lo que los punteros no se pueden usar para cruzar el límite, pero siempre se debe considerar si el puntero (matriz) está fuera de los límites para mejorar la seguridad de el programa.
Espero que te ayude. . .