.
<. div style = "text-align: justify;">
<. div style = "text-align: justify;"> Paso 4: Destruye la memoria / Desasignar piscina
SysAdmin, Dev-Ops, VMware and Cloud
.
<. div style = "text-align: justify;">
<. div style = "text-align: justify;"> Paso 4: Destruye la memoria / Desasignar piscina
# include
# include
# include
# define MAX_MEMORY_POOL_NODES 10
/ * Nodo * /
typedef struct nodo
{
datos int;
int nodeAllocated;
} NODO;
typedef struct Memorypool
{
NODO * array [MAX_MEMORY_POOL_NODES];
int nodeCounter;
} MEMORYPOOL;
MEMORYPOOL allocNode;
/ *
* initialiseMemoryPool ()
* /
vacío initialiseMemoryPool ()
{
uIndx unsigned char;
/ * Inicialización de la memoria para los nodos * /
for (uIndx = 0; uIndx
{
allocNode.array [uIndx] = (NODO *) malloc (sizeof (NODO));
allocNode.array [uIndx] -> ; nodeAllocated = 0;
allocNode.nodeCounter + +;
}
}
NODO * getTheFreeNodeFromPool ()
{
int uIndx;
/ * Obtener la memoria del grupo de nodos * /
para (uIndx = 0; uIndx
{
if (allocNode.array [uIndx] -> nodeAllocated == 0)
{
allocNode.array [uIndx] -> nodeAllocated = 1;
; allocNode.nodeCounter–;
romper;
}
}
if (uIndx == MAX_MEMORY_POOL_NODES)
{
printf (» No hay nodos libres están disponibles n » );
devuelve NULL;
}
volver allocNode.array [uIndx ];
}
/ *
* Añadir el nodo a la piscina Memory
* /
vacío addTheNodeToMemoryPool (uIndx unsigned char)
{
/ * Añadir el nodo a la piscina * /
if (allocNode.array [uIndx] -> nodeAllocated == 1)
{
allocNode.array [uIndx] -> data = 0;
allocNode.array [uIndx] -> nodeAllocated = 0;
allocNode.nodeCounter + +;
}
demás
{
printf (» No hay nodos están ahí Añadir n «);
volver;
}
}
/ *
* deallocateTheMemoryPool-Desasignar la piscina Memory
* /
vacío deallocateTheMemoryPool (void)
{
uIndx unsigned carbón;
/ * De-asignar la memoria de billar * /
, pues (uIndx = 0; uIndx
{
Courier style=»font-family: libre (allocNode.array [uIndx]);
}
}
/ * Inicio * /
int main ()
{
uIndx unsigned char, índice;
Courier style=»font-family: / / Paso 1:
/ * Inicializar la agrupación de memoria * /
initialiseMemoryPool ();
/ / Paso 2:
/ * Obtener el nodo en el agrupación de memoria * /
para (uIndx = 0; uIndx
{
NODO * nodo = NULL;
; datos int;
= nodo getTheFreeNodeFromPool ();
if (nodo)
{
; printf («Introduzca los datos que se añadirán en la Lista de enlaces n»);
scanf («% d», & datos);
-> nodo data = datos;
}
}
/ * mostrar los datos * /
printf (» Display Data n «);
para (uIndx = 0; uIndx
{
printf («% d n», allocNode.array [uIndx] -> data);
}
/ / Paso 3:
/ * Añadir el nodo de agrupación de memoria * /
printf (» Introduzca el nodo que se añade a la agrupación de memoria n «);
scanf («% d «, & index);
;
addTheNodeToMemoryPool (índice);
/ * mostrar los datos * /
printf («Mostrar datos después de la adición de nodos a libre piscina n»);
para (uIndx = 0; uIndx
{
printf («% d n», allocNode.array [uIndx] -> data);
;}
/ / Paso 4:
/ * De Asignar la agrupación de memoria * /
deallocateTheMemoryPool ();
return 0;
Courier style=»font-family: }