declaración de la función:
void *malloc(size_t size)
cabecera:
#include <stdio.h>
Descripción de la función:
- La asignación de espacio de memoria requerido, y devuelve un puntero a ella.
parámetros:
- Tamaño - el tamaño del bloque de memoria, en bytes.
Devuelve:
- La función devuelve un puntero al tamaño de la memoria asignada. Si la solicitud no, se devuelve NULL.
Ejemplo:
El siguiente ejemplo demuestra el uso de la función malloc ().
#include <stdio.h>
#include <stdlib.h>
void update_value(int* p){
*p = 100;
}
int main()
{
//在栈上面分配变量a 占4个字节
int a = 10;
//申请类型是int内存空间;占4个字节;p指针指向该4个字节的内存空间
int *p = (int*)malloc(sizeof(int));
//p变量也占4字节;所以sizeof(p)=8个字节
//赋值p只指向的动态空间为50
*p = 50;
printf("p->value=%d &p=%p sizeof(*p)=%ld, sizeof(p)=%ld sizeof(a)=%ld \n", *p, p, sizeof(*p), sizeof(p),sizeof(a));
free(p);//修改p指向的内存中的数据
printf("p->value=%d &p=%p sizeof(*p)=%ld, sizeof(p)=%ld sizeof(a)=%ld \n", *p, p, sizeof(*p), sizeof(p),sizeof(a));
update_value(p);
printf("p->value=%d &p=%p sizeof(*p)=%ld, sizeof(p)=%ld sizeof(a)=%ld \n", *p, p, sizeof(*p), sizeof(p),sizeof(a));
return(0);
}
NOTA: Cuando la memoria no utilizada, utilice la función free () de los bloques de memoria liberados.
void *: Tipo indeterminada representa un puntero disposiciones, C / C ++ void*
se pueden convertir a cualquier otro tipo de manos fuertes, hay un dicho que es nula en cualquier otro tipo pueden ser asignados a él directamente, sin la necesidad de un fuerte giro, pero no viceversa puede.
la malloc : asignado tamaño de la memoria es de al menos el número de bytes especificado por los parámetros.
malloc
El valor de retorno es un puntero a la posición de inicio en la memoria periodo disponible, el período disponible de la dirección del punto de inicio de la memoria, varias llamadas a malloc
la dirección asignada se superponga a menos malloc asignado una dirección particular, deben ser liberados a cabo malloc debe ser completado tan pronto como sea posible y retorno a la asignación de memoria (algoritmo de asignación no se puede utilizar la memoria de la NP-duro) malloc alcanzado mientras se logra la liberación de la memoria y el tamaño de la memoria función de ajuste (realloc y libre)
malloc
Y free
se emparejan, no libera pérdida de memoria si la aplicación es, si por ninguna razón y que es la liberación de no hacer nada, sólo puede ser liberada una vez liberado, si hay un espacio para liberar dos o más veces de forma incorrecta (pero fue liberado nula se produce una excepción de puntero, la liberación de un puntero nulo es también igual a nada que hacer, así que ¿cuántas veces es posible la liberación.)