Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Memoria dinamica

Estas en el tema de Memoria dinamica en el foro de C/C++ en Foros del Web. Hola mi duda es que, Por ejemplo si tengo un array: int i; int tamaño = 50; i = new int[tamaño]; estoy reservando el tamaño ...
  #1 (permalink)  
Antiguo 22/08/2008, 12:54
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 1 mes
Puntos: 2
Pregunta Memoria dinamica

Hola mi duda es que,
Por ejemplo si tengo un array:
int i;
int tamaño = 50;
i = new int[tamaño];

estoy reservando el tamaño de 50
ints, pero si por ejemplo nesesito ampliarlo
a 60 como puedo ampliar ese tamaño?
sin que se pierdan los datos que ya guarde
en los primeros 50?

tendria que hacer algo asi como
guardar los datos en otro array
liberar ese y bolberl ampliar a 60
rellenarlo de nuevo y regresarle
los datos, o ahi alguna forma de ampliarlo
asi de facil como se reserva el espacio?
  #2 (permalink)  
Antiguo 22/08/2008, 19:27
 
Fecha de Ingreso: junio-2008
Mensajes: 63
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Memoria dinamica

Me temo que con los operadores new y delete de C++ no se puede, la única forma es como tú mismo has dicho, tienes que crear nueva memoria para el arreglo más grande y copiar los datos del pequeño en el grande. Esto es así porque los arreglos pueden ser de objetos, y los objetos podrían requerir un manejo especial para copiarlos.

En C existe realloc para cambiar el tamaño de la memoria asignada por malloc, pero no es correcto usar estás funciones en C++, y realloc lo que hace es exactamente lo que has dicho, crear nueva memoria y copiar los datos y al final liberar la memoria "vieja".
  #3 (permalink)  
Antiguo 22/08/2008, 20:27
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Memoria dinamica

Hola gracias por tomarte el tiempo en responderme
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:26.