www whatwg spec language 3wc c malloc

whatwg - no hay montón en c?



w3c html standards (4)

Acabo de empezar a leer El lenguaje de programación C por Brian Kernighan y Dennis Ritchie, y encontré esta declaración:

El lenguaje no define ninguna facilidad de asignación de almacenamiento que no sea la definición estática y la disciplina de pila provista por las variables locales de funciones; no hay montón o recolección de basura.

Entonces, ¿esto significa que es debido a la función malloc() , que devuelve alguna dirección de memoria del montón, que C disfruta de acceso a la memoria del montón? Y entonces, ¿debe escribirse malloc en algún otro idioma, probablemente ensamblador o B?

Esto puede ser una duda tonta, pero tengo que aclararlo. Gracias.


Creo que los autores son muy precisos cuando dicen que están hablando sobre el "lenguaje". Cuando hablas de C, tienes el lenguaje y las bibliotecas estándar. En el lenguaje en sí, no hay una función de asignación de memoria dinámica, pero la biblioteca estándar proporciona esas instalaciones.


El lenguaje C en sí no especifica directamente para un montón o cómo debería funcionar, pero proporciona punteros, etc.

malloc y sus primos son parte de algo que se llama la biblioteca estándar de C, y son funciones a las que se vincula con cualquier implementación estándar de C, y estas proporcionan acceso a la memoria que no es estática o en la pila. En cada plataforma, la forma en que esas funciones realmente obtienen y administran esa memoria puede ser diferente.

C es una biblioteca y lenguaje de larga data, y ahora todo parece ser de una pieza. Pero cuando K&R estaba escribiendo ese libro, eso no era tan obvio, y esa afirmación es una aclaración de lo que pertenece a la sintaxis del lenguaje en sí (en comparación con lo que suelen proporcionar las bibliotecas de apoyo).



malloc obtiene memoria asignada a ella desde el kernel del sistema operativo. Todos los idiomas hacen esto. Así es como el sistema operativo se asegura de que los programas tengan espacio disponible, aunque no lo impida o no lo impida, en particular los escritos en C, de intentar ir más allá de los límites.