viernes, 19 de noviembre de 2010

Asignación dinámica de memoria


Asignación dinámica de memoria: new y delete

En C la asignación dinámica de memoria se manipula con las funciones malloc() y free(). En C++ se define un método de hacer asignación dinámica utilizando los operadores new y delete.
El operador new está disponible directamente en C++, de modo que no se necesita utilizar ningún archivo de cabecera; new se puede utilizar con dos formatos:new tipo // asigna un único elemento
new tipo[num_eltos] // signa un array
Si la cantidad de memoria solicitada no está disponible, el operador new proporciona el valor 0. El operador delete libera la memoria signada con new.delete variable
delete [n] variable
new es superior a malloc por tres razones:
1.-
new conoce cuánta memoria se asigna a cada tipo de variable.
2.- 
malloc() debe indicar cuánta memoria asignar.
3.-
new hace que se llame a un constructor para el objeto asignado y malloc no puede.
delete produce una llamada al destructor en este orden:
1. Se llama al destructor
2. Se libera memoria
delete es más seguro que free() ya que protege de intentar liberar memoria apuntada por un puntero nulo.
Bibliografía de la investigación:
código fuente del programa:
#include<iostream.h>
#include<conio.h>
int main(void)
{
clrscr();
int *vector, tm;
int indice=0,i;
cout<<"Ingrese el numero de elementos:";
cin>>tm;
vector = new int[tm];//asignacion dinamica de memoria.
for(indice=0;indice<tm;indice++)
{
cout<<"Introduzca un vector["<<indice + 1<<"]:";
cin>>vector[indice];                                                                      
}
for(i=0;i<tm;++i)
{
cout<<vector[i]<<endl;
}
return 0;
}

 
En este programa se le pide al usuario que inserte el número de elementos que va a  tener su vector  y con el oprador NEW sele asigna el valor a cada elemento del vector, después con un ciclo for se imprime en pantalla el valor que se le asigno al elemento.

No hay comentarios:

Publicar un comentario