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

Problema con Realloc

Estas en el tema de Problema con Realloc en el foro de C/C++ en Foros del Web. Hola, estoy realizando un algoritmo en el cual necesito redimencionar una variable, buscando en internet llegue a realloc, pero al ejecutar el algoritmo, luego de ...
  #1 (permalink)  
Antiguo 03/07/2014, 22:36
 
Fecha de Ingreso: enero-2013
Mensajes: 10
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Problema con Realloc

Hola, estoy realizando un algoritmo en el cual necesito redimencionar una variable, buscando en internet llegue a realloc, pero al ejecutar el algoritmo, luego de agregar 2 espacios nuevos a la variable me arroja el siguiente error (con otras cosas mas feas .-.):

*** glibc detected *** ./a.out: realloc(): invalid next size: 0x0902d2d8 ***

La verdad no entiendo que pasa, ojalá alguien se apiade de mi alma y me pueda explicar el error.

Algo así esta la parte donde uso realloc:

Código C++:
Ver original
  1. variable = (tipo_variable *)realloc( variable  ,sizeof(tipo_variable)*(nro_elementos + 1));
  #2 (permalink)  
Antiguo 04/07/2014, 00:52
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años, 5 meses
Puntos: 49
Respuesta: Problema con Realloc

Sorry, equivoqué el lugar del mensaje que iba a poner.
  #3 (permalink)  
Antiguo 05/07/2014, 05:59
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 3 meses
Puntos: 83
Respuesta: Problema con Realloc

Puedes concretar mas de que tipo es 'variable'?

Otra cosa, no retornes el valor de realloc a una variable para la cual ya has reservado memoria, hazlo sobre una intermedia con la que comprovaras el caso de error y luego la asignas donde quieras, de lo contrario en caso de error en la funcion realloc estaras provocando una perdida de memoria (memory leak)

Código C:
Ver original
  1. char *texto, *tmp;
  2.  
  3. if(!(texto = malloc(sizeof(char)*10))) {
  4.     //error malloc
  5. }
  6. else {
  7.     if(!(tmp = realloc(texto, sizeof(char)*20))) {
  8.         //error realloc
  9.     }
  10.     else {
  11.         texto = tmp;
  12.         //todo ok
  13.     }
  14.     free(texto);
  15. }

Saludos
vosk
  #4 (permalink)  
Antiguo 05/07/2014, 06:20
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: Problema con Realloc

Como abogado de realloc opino que mi cliente es inocente.

El culpable debe buscarse en la o las instrucciones siguientes, que no han sido mostradas en este tribunal.

Esas instrucciones deben estar corrompiendo la memoria que realloc retorno.
__________________
Visita mi perfil en LinkedIn

Etiquetas: int, realloc
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 14:16.