Wenas, aqui sigo viendo cosillas en c y me ha surgido el siguiente problema en éste "programilla":
/* vectores dinámicos
que reservarán espacio en función de la dimensión que
especifiquemos*/
#include <stdio.h>
#include <stdlib.h>
int* reservar_memoria(int dim);
void lee_vector(int *vector, int dim);
void imprime_vector(int *vector, int dim);
void liberar_memoria(int *vector);
int main()
{
int vector;
int dim;
printf("Vectores dinámicos\n\n");
printf("Introduce la dimensión que tendrá: ");
scanf("%d", &dim);
lee_vector(vector, dim);
imprime_vector(vector, dim);
}
/ hace una reserva de memoria en función de la dimensión
que tendrá el vector y nos devuelve un puntero al inicio
del bloque de memoria que ha reservado/
int reservar_memoria(int dim)
{
int *vector;
vector=(int )malloc(dimsizeof(int));
return vector;
}
void lee_vector(int *vector, int dim)
{
int i;
for (i=0; i<dim; i++)
{
printf("introduce el elemento %d: ", i+1);
scanf("%d", &vector);
}
return;
}
void imprime_vector(int *vector, int dim)
{
int i;
printf("El vector es: [");
for (i=0; i<dim; i++)
{
printf("%d", vector);
if (i+1<dim) printf(", ");
}
printf("]\n");
return;
}
void liberar_memoria(int *vector)
{
free(vector);
vector=NULL;
return;
}
Ejecuta correctamente:
Introduce la dimensión que tendrá: 7
introduce el elemento 1: 1
introduce el elemento 2: 2
introduce el elemento 3: 3
introduce el elemento 4: 4
introduce el elemento 5: 5
introduce el elemento 6: 6
introduce el elemento 7: 7
El vector es: [1, 2, 3, 4, 5, 6, 7]
Sin enbargo si introduzco enteros mayores me sucede esto:
Introduce la dimensión que tendrá: 3
introduce el elemento 1: 222
introduce el elemento 2: 666
introduce el elemento 3: 1
El vector es: [222, 666, 1]
9751:
9751: calling fini: /lib/tls/i686/cmov/libc.so.6 [0]
9751:
9751:
9751: runtime linker statistics:
9751: final number of relocations: 92
9751: final number of relocations from cache: 5
¿Dónde la estoy cagando? Porque nunca me habia salido nada parecido, y lo más curioso de todo es que el "error" o lo que sea lo da tras ejecutarse correctamente...
Gracias