C/Visual C - Realloc

 
Vista:

Realloc

Publicado por Fuiks (2 intervenciones) el 04/02/2006 00:19:26
Hola, hacía mucho que no me pasaba por esta página, desde mis mejores tiempos de carrera, creo que eres de mi promoción de la autónoma incluso!

Bueno al grano, a ver si teneis alguna idea de pq este realloc falla:

int introduceDato (int** almacen, int size, int dato){
int i;

*almacen = realloc(*almacen, size + 1);
*almacen[size] = dato;
return 0;
}

Algunos de los datos del array de enteros de almacen se alteran al pasar por el realloc :S pero no se pq puede ser.... Ya se que me recomendareis no usar el realloc, devolver como resultado de la función el puntero a almacen... pero me gustaría usar esta forma..

Gracias por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Realloc

Publicado por kero (45 intervenciones) el 04/02/2006 23:31:55
Una pregunta: antes de hacer el realloc en algun lado haces malloc al array ?? si es asi entonces el problema esta en otro lado y si no es asi entonces tenes que hacer si o si malloc en ves de realloc.

suerte.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Realloc

Publicado por Fuiks (2 intervenciones) el 04/02/2006 23:38:43
Si, perdon, no puse el método main.

en el main tengo escrito un código de este tipo:

int main(){
int *vector, i;

vector = (int*)malloc(sizeof(int) * 10);

for (i = 0; i < 10; i++){
vector[i] = i+ 2*i;
}

introduceDato (&vector, 10, 333);
}

El problema reside en el realloc, antes del realloc he puesto que imprima por pantalla todo el contenido del vector y que repita lo mismo despues del realloc y es en esta segunda impresión donde el vector tiene algunos valores cambiados.

Perdon por no haber detallado el main.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Realloc

Publicado por Marcos (11 intervenciones) el 05/02/2006 13:36:31
Lo que creo que pasa es que al pasar el 2º argumento a realloc, le pasas el numero de int´s que quieres en vez de bytes, que segun el man de linux es lo que has de pasarle, o sea que has de poner algo asi como lo que ha spuesto el el malloc del main:
*almacen = realloc(*almacen, sizeof(int)*(size + 1));

Salu2...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Realloc

Publicado por kero (45 intervenciones) el 06/02/2006 01:20:34
Si me parece que el flaco tiene razon deberias poner algo asi como lo que te esta diciendo y eso no deberia darte problemas.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar