Red de conocimientos turísticos - Conocimientos sobre calendario chino - ¿Por qué necesitamos liberar memoria antigua cuando programamos en lenguaje C?

¿Por qué necesitamos liberar memoria antigua cuando programamos en lenguaje C?

Lo que dijo nuestro profesor es que C no tiene un mecanismo para reciclar la memoria aplicada dinámicamente. Se requiere liberación activa. Los lenguajes de alto nivel como JAVA tienen este mecanismo. Acabo de comprobarlo y parece que C no existe.

Es decir, C/C necesita liberar activamente la memoria aplicada dinámicamente.

Intente explicar por qué debería liberar activamente la memoria aplicada dinámicamente:

1. La memoria aplicada dinámicamente se almacena en el montón y el compilador no la reciclará por sí solo. reciclaje: en términos sencillos, significa decirle al compilador que esta memoria se puede utilizar.

Si no se recicla, esta memoria nunca se reutilizará. Es decir, una pérdida de memoria.

Por ejemplo, int *a=(int *)malloc (sizeof(int)*4);

2. Ahora solo está el puntero a que apunta a esta memoria aplicada dinámicamente. , y no hay más. Este espacio de memoria se puede encontrar a través de otras rutas. Si el punto de a se cambia antes de que se libere el espacio de memoria al que apunta a, se puede ver que esta memoria ya no se encontrará. Entonces esta memoria no se liberará, que es la pérdida de memoria mencionada anteriormente.