INTRODUCCIÓN
La
temática relacionada con los operadores y las funciones utilizadas para la
gestión dinámica de memoria, trata sobre programas de aplicación a los
operadores new y delete propios de C++, al igual que las funciones malloc(),
free(), calloc() y realloc().
QUÉ ES
UN OPERADOR
Un
operador es un símbolo (+, -, *, /, etc) que tiene una función predefinida
(suma,
resta, multiplicación, etc)
TIPOS DE OPERADORES
- Aritméticos
- Relacionales
- Lógicos
- A nivel de
bit (bitwise operators)
- Especiales
TIPOS DE OPERADORES
- Aritméticos: Nos permiten, básicamente, hacer cualquier
operación aritmética, que necesitemos (ejemplo: suma, resta, multiplicación, etc).
OPERADOR
|
FUNCIÓN
|
-
|
Resta
|
+
|
Suma
|
*
|
Multiplicación
|
/
|
División
|
·/.
|
Módulo
|
--
|
Decremento
|
++
|
Incremento
|
- Relacionales: Al igual que en matemáticas, estos operadores nos
permitirán evaluar las relaciones (igualdad, mayor, menor, etc) entre un
par de operandos. Los operadores relacionales de los que dispone C++ son:
OPERADOR
|
FUNCIÓN
|
>
|
Mayor que
|
>=
|
Mayor o
igual que
|
<
|
Menor que
|
<=
|
Menor o
igual que
|
==
|
Igual
|
!=
|
Distinto
|
El resultado de cualquier evaluación de este tipo,
es un valor ``cierto'' (true) o ``falso'' (false).
vRelacionales:
Al igual que en matemáticas, estos operadores nos
permitirán evaluar las relaciones (igualdad, mayor, menor, etc) entre un
par de operandos. Los operadores relacionales de los que dispone C++ son:
OPERADOR
|
FUNCIÓN
|
>
|
Mayor que
|
>=
|
Mayor o
igual que
|
<
|
Menor que
|
<=
|
Menor o
igual que
|
==
|
Igual
|
!=
|
Distinto
|
El resultado de cualquier evaluación de este tipo,
es un valor ``cierto'' (true) o ``falso'' (false).
v Lógicos:
Como operadores lógicos designamos a aquellos
operadores que nos permiten ``conectar'' un par de propiedades
OPERADOR
|
FUNCIÓN
|
&&
|
Conjunción (Y)
|
||
|
Disyunción (O)
|
!
|
Negación
|
OPERADORES NEW Y DELETE
El lenguaje C++ cuenta con dos operadores pre
construidos, ellos son:
New y Delete
Por esta razón no se requiere incluir ninguna
librería o archivo de cabecera para utilizarlos.
El operador New: Realiza una labor parecida a la de
la función malloc(), asignando un bloque de memoria según sea requerido
OPERADOR DELETE
Este operador libera un bloque de memoria asignada
por New en tiempo de ejecución, de manera semejante a como lo hace la función
free().
La sintaxis para el uso del operador new es:
Apuntador = new tipo_de_dato;
Este operador hace una petición al sistema
operativo para que se le asigne un espacio en memoria, con el tamaño acorde al
tipo de datos, si este espacio está disponible, la operación regresa la
dirección real que se otorga, en caso de no haber espacio regresa el valor de
NULL (0).
FUNCION DE MALLOC () Y FREE ()
FUNCIÓN MALLOC ():
Es una de las funciones de asignación de memoria
propias del
lenguaje de programación C.
Cuando se usa malloc () se pasa la
cantidad de bytes de memoria que
se necesita (asigna el numero especifico de
bytes).
Malloc () encuentra y reserva un bloque de
menoría del tamaño pedido
y regresa la dirección del primer byte del bloque.
No hay de qué preocuparse sobre que parte de memoria se usa, ya que esto es
manejado automáticamente.
La función malloc () regresa una
dirección, y su tipo de retorno es un apuntador a tipo void.
POR QUE VOID
Un apuntador a tipo void es compatible con todos
los tipos de datos. Como la memoria asignada por malloc ()
puede ser usada para guardar cualquiera de los tipos de datos de C,
es adecuado el tipo de retorno void.
LA FUNCIÓN FREE()
Al igual que malloc(), free() es una función
del lenguaje de programación C, utilizado para liberar la memoria
asignada por malloc (). Al usar la función free () se debe
tener en cuenta la regla de oro explicada en el apartado del operador delete:
"toda la memoria que se reserve durante el
programa hay que
liberarla antes de salir del programa“.
Al usar las funciones malloc () y free ()
se debe incluir el archivo de cabecera o librería STDLIB.H.
Ejemplos de aplicación
Ejemplo 1
Asigna memoria para un arreglo de 50 enteros
Int *numero;
numero = (int* )malloc (50 * sizeof (int));
OTRAS
FUNCIONES PARA ASIGNAR FUNCIONES DINÁMICAS
La Funcione Calloc()
A continuación se presentan el prototipo para la
definición de la función Calloc().
void *calloc(size_tnmemb, size_tsize);
Cuando se usa la función malloc() la memoria
no es inicializada (a cero) o borrada. Si se quiere inicializar la memoria
entonces se puede usar la función calloc. La función calloc es
computacionalmente un poco más cara pero, ocasionalmente, más conveniente
que malloc.
Se debe observar también la diferencia de sintaxis
entre calloc y malloc, ya que calloc toma el
número de elementos deseados (nmemb) y el tamaño del elemento (size),
como dos argumentos individuales.
Por lo tanto para asignar a 100 elementos enteros
que estén inicializados a Cero se puede hacer:
int *ip;
ip = (int *) calloc(100, sizeof(int) );
La Función Realloc( )
Esta función intenta cambiar el tamaño de un
bloque de memoria previamente asignado. El nuevo tamaño puede
ser más grande o más pequeño. Si el bloque se hace más grande,
entonces el contenido anterior permanece sin cambios y la memoria es
agregada al final del bloque. Si el tamaño se hace más pequeño
entonces el contenido sobrante permanece sin cambios.
El prototipo de definición para la función realloc()
es como se presenta a continuación.
void *realloc(void *ptr, size_tsize);
RESUMEN DE LAS FUNCIONES
FUNCIÓN
|
DESCRIPCCIÓN
|
MALLOC
|
Asigna el numero especifico de bytes.
|
REALLOC
|
Aumenta o disminuye el tamaño del bloque de
memoria especificada. Reasigna si es necesario.
|
CALLOC
|
Asigna el numero especificado de bytes y los
inicializa a cero (0).
|
FREE
|
Libera el bloque de memoria especificada de nuevo
al sistema.
|
No hay comentarios:
Publicar un comentario