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
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.
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
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;
#include<conio.h>
int main(void)
{
clrscr();
int *vector, tm;
int indice=0,i;
cout<<"Ingrese el numero de elementos:";
cin>>tm;
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];
{
cout<<"Introduzca un vector["<<indice + 1<<"]:";
cin>>vector[indice];
}
for(i=0;i<tm;++i)
{
cout<<vector[i]<<endl;
}
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