Lenguaje C malloc, uso gratuito

En primer lugar, lo que es un puntero: puntero se utiliza para almacenar la dirección de una variable, que es la operación de la memoria operativa. definición de lenguaje C de una variable almacenada en el puntero de dirección de memoria, que es un valor entero sin signo de 32 bits.

1, cómo inicializar un puntero

int * pbuff1, y int * pbuff2 = NULL; lo diferencia es que

En primer lugar, pbuff1 no apunta a NULL inicializado, no apuntar a la memoria válida. Así pbuuf1 es una guía de campo. Se apuntará a una dirección aleatoria, lo cual es muy peligroso. Al escribir en la guía de campo, nadie va a saber lo que el resultado puede modificar el programa de otros valores.

pbuff2 inicializado a puntero NULL indica pbuff2 no apunta a nada, el puntero vacante. caos puntero no se estire el dedo.

2, el uso de un puntero

El ex puntero recomendada para el espacio asignado. En general, cuando el uso de punteros que necesita saber cuánto del espacio.

Este uso de malloc:

* malloc vacío (numBytes largos): Esta función numBytes bytes asignados, y devuelve un puntero que apunta a esta memoria. Si la asignación falla, devuelve un puntero nulo (NULL)

pBuff = malloc (lenAll * sizeof (char));

si (pBuff! = NULL)

{

memcpy (pBuff, piel de ante, 8 * sizeof (char));

}

Aquí se trata de asignar un espacio, y luego la dirección de memoria indicada pBuff, si la asignación se realiza correctamente, poner el valor recibido se almacena en el aficionado al puntero pBuff.

También inicializado unsigned char * pBuff = NULL;

3, la forma de evitar pérdidas de memoria

malloc correspondiente libre:

libre de huecos (void * FirstByte): Esta función es antes de que el espacio asignado por malloc devuelto al programa o sistema operativo, que se libera esta memoria, se deja recuperar la libertad.

Nota libre al final lo que se libera:

free () es un puntero a la memoria liberada. todavía existe la variable puntero, sólo para ser destruido hasta el final del programa. Pero ahora el puntero está contenido indefinido de la basura, por lo que ahora se ha convertido en puntero de una guía de campo.

Por lo tanto, después de la liberación del puntero de memoria en NULL, vacante. Prevenir eliminar la referencia de puntero accidentalmente ha estado en la parte posterior.

Al mismo tiempo, no confirma esta memoria en la libre, no finales libres luego usando.

4, añadido:

malloc y libre es uno a uno, si malloc sólo una vez, y el correspondiente tiempo libre necesario, la liberación repetida es incorrecto.

función malloc () es el mecanismo de trabajo:

En esencia se refleja la función malloc, que tiene una conexión de los bloques de memoria disponibles en una larga lista de la llamada lista libre. Cuando se llama a la función malloc, que se ve en una tabla de conexión de bloque de memoria lo suficientemente grande como para satisfacer la petición del usuario se requiere. A continuación, el bloque de memoria se divide en dos (igual al tamaño de un tamaño solicitado por el usuario, la otra es el tamaño de los bytes restantes). A continuación, se le asignará al usuario que la memoria aprobada para el usuario, y la pieza restante (si lo hay) para volver a la tabla de enlaces. Cuando se llama a la función libre, el usuario liberará los bloques de memoria están conectados a la cadena libre. En el extremo, la cadena de inactividad será cortado en muchos pequeños fragmentos de la memoria, si el usuario a continuación, aplicar para un gran segmento de la memoria, entonces el fragmento de cadena de ralentí no puede cumplir los requisitos del usuario. Por lo tanto, malloc solicitud función de retardo, y comienza a comprobar cada uno de los segmentos de memoria hurgando en el tramo vacío, especie ellos, los pequeños bloques libres adyacentes en un bloque más grande de memoria.

Publicados 241 artículos originales · ganado elogios 3 · Vistas 3184

Supongo que te gusta

Origin blog.csdn.net/it_xiangqiang/article/details/105163414
Recomendado
Clasificación