Colección de citas famosas - Slogan de motivación - El problema del espacio de memoria asignado por la función malloc() en lenguaje C

El problema del espacio de memoria asignado por la función malloc() en lenguaje C

El problema comienza con la pila. Un programa generalmente se divide en tres partes: parte de código, parte de datos (datos estáticos) y parte de pila. La parte de la pila almacena variables en el programa, parámetros pasados ​​por el programa, etc. (Las variables asignadas dinámicamente se almacenan en la pila y las variables asignadas estáticamente se almacenan en la pila). La pila crece de la siguiente manera:

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. . .