Red de conocimiento informático - Computadora portátil - Un pequeño problema en lenguaje C, ¿se puede liberar la memoria así?

Un pequeño problema en lenguaje C, ¿se puede liberar la memoria así?

En lenguaje C, free() es una función de biblioteca que libera memoria y su prototipo de función está definido en el archivo de encabezado stdlib.h.

Además, las funciones de biblioteca que asignan memoria para variables de puntero incluyen: malloc(), calloc(), realloc().

Pero una cosa para recordar es que al asignar memoria para una variable de puntero, debe determinar si la asignación de memoria se realizó correctamente. En otras palabras, si se devuelve un puntero nulo NULL, la asignación de memoria falla y la aplicación saldrá inmediatamente sin usar la función free() para liberar la memoria. De lo contrario, si la memoria no se asigna correctamente y aún usa la función free() para liberar la memoria, el sistema también tendrá problemas.

Según mis muchos años de experiencia en programación, los mejores programas se pueden escribir en el siguiente estilo, como se detalla a continuación (tomando malloc como ejemplo, también se pueden usar otras funciones):

#include

#include /* La función malloc() y la función free() están definidas en este archivo de encabezado*/

void main() /* Inicio de la función principal */

{

char * p /* Definir una variable de puntero de carácter p */

p = (char *)malloc(10000* sizeof(char) ); /* Asigne un bloque de tamaño 10000 a p.p. Asigne un bloque de memoria de 10000 bytes */

if( p == NULL ) /* Esta declaración no debe omitirse si la asignación falla (es decir, free() se usa para liberar memoria*/

{

printf( "¡Error en la asignación de memoria! \n") /* Salida: Error en la asignación de memoria*/

exit(1) /* Salga de la aplicación inmediatamente*/

}

strcpy( p , "¡¡¡¡Esta es una cadena de prueba!!!!!\n" ) /* Si la asignación de memoria se realiza correctamente, copie la cadena en la variable p */

<; p>printf ("%s\n", p) /* Muestra la cadena copiada en p en la pantalla*/

free( p ) /* Recuerde usar la función free(); liberar la asignación con éxito */

free( p /* Utilice la función free( ) para liberar la memoria asignada con éxito */

Tenga en cuenta que puede utilizar el Función free() para liberar la memoria que se ha asignado correctamente. Memoria asignada exitosamente*/

Tenga en cuenta que la función free( ) no se utiliza para asignar memoria*/

}

}