elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con realloc :(
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con realloc :(  (Leído 2,572 veces)
sherry_XD

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Problema con realloc :(
« en: 4 Julio 2014, 06:56 am »

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:

variable = (tipo_variable *)realloc( variable  ,sizeof(tipo_variable)*(nro_elementos + 1));


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema con realloc :(
« Respuesta #1 en: 4 Julio 2014, 06:59 am »

puede ser que estés corrompiendo la data o alterando incorrectamente la variable, puedes publicar tu código más completo? (cuando lo publiques usa las etiquetas GeSHi que está arriba de los emoticones a la derecha)


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
sherry_XD

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Problema con realloc :(
« Respuesta #2 en: 4 Julio 2014, 07:12 am »

Código
  1. void h::insertar(nodo n){
  2. a= (nodo *)realloc(a,sizeof(nodo)*(cantidad + 1));
  3. cantidad++;
  4. a[cantidad] = n;
  5. return;
  6. }
  7.  

h es una clase:
Código
  1. class h{
  2. int cantidad;
  3. nodo *a;
  4. public:
  5. h();
  6. void insertar(nodo a);
  7.  
  8. };
  9.  
« Última modificación: 4 Julio 2014, 07:14 am por sherry_XD » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema con realloc :(
« Respuesta #3 en: 4 Julio 2014, 07:29 am »

inicializaste cantidad y a?


modificado---------------


XD ya vi el error! XD


Código
  1. void h::insertar(nodo n){
  2. a= (nodo *)realloc(a,sizeof(nodo)*(cantidad + 1));
  3. cantidad++;
  4. a[cantidad] = n;
  5. return;
  6. }

haces el array de un tamaño 2 (es decir con claves 0, 1) y luego intentas meter un nodo en la posicion 2

Código
  1. void h::insertar(nodo n){
  2. a= (nodo *)realloc(a,sizeof(nodo)*(cantidad + 1));
  3.  
  4. a[cantidad] = n;
  5. cantidad++;
  6. return;
  7. }

eso debería solucionar el problema... recomiedno en estos casos hacer uso del debugger... ahí fue que lo vi XD
« Última modificación: 4 Julio 2014, 07:40 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Problema con realloc :(
« Respuesta #4 en: 4 Julio 2014, 17:38 pm »

¡Buenas!

Cuando utilices realloc es recomendable utilizar un puntero auxiliar para almacenar el valor devuelto por la función. Si realloc no puede reservar la cantidad de espacio especificada devuelve NULL (y creo que deja el puntero original sin modificar, pero por si acaso mira alguna referencia como www.cplusplus.com ). Si no te devuelve NULL lo único que tienes que hacer es asignar el puntero auxiliar al original. Trabajando de esta forma te ahorrarás posibles problemas que puedan surgir en tu programa y tendrás los errores más controlados.

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
API parecida a realloc
Ingeniería Inversa
.:UND3R:. 3 2,507 Último mensaje 6 Octubre 2011, 17:56 pm
por Иōҳ
problemas con parámetros realloc
Ingeniería Inversa
.:UND3R:. 1 2,219 Último mensaje 6 Octubre 2011, 06:02 am
por apuromafo CLS
Problema con realloc - c
Programación C/C++
HRSLASH 5 3,187 Último mensaje 5 Noviembre 2012, 02:51 am
por HRSLASH
Problema con realloc en un bucle
Programación C/C++
SheKeL_C$ 4 2,517 Último mensaje 18 Marzo 2016, 18:04 pm
por SheKeL_C$
Duda con realloc
Programación C/C++
mester 5 3,740 Último mensaje 6 Septiembre 2016, 18:29 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines