aprendizaje de idiomas C: función malloc ()

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.

mallocEl 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 mallocla 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)

mallocY freese 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.)

Publicados 100 artículos originales · ganado elogios 45 · vistas 640 000 +

Supongo que te gusta

Origin blog.csdn.net/wangzhongshun/article/details/101430545
Recomendado
Clasificación