Título: [Ayuda-C] Vectores y punteros (inicialización dinámica) Publicado por: Miky Gonzalez en 12 Noviembre 2014, 20:54 pm Para el uso más cómodo de un programa en la creación de un simulador físico que requiere el uso de muchos vectores se me ha ocurrido crear una libreria para el manejo de los vectores. Comienzo definiendo la siguiente estructura:
Código
Entonces para la creación del vector uso: Código
Y creo una función que inicialice el vector (reservar memoria y ajustar elementos): Código
En este paso se encuentra mi problema. Explicaré la idea del código para un mejor entendimiento: 1. Se reserva memoria para (n_elementos * tamaño_dato), esto es, si yo declaro: Código
el cálculo sería: (3 * sizeof(float)), es decir, 3 elementos * 4 bytes = 12 bytes. Cuando se hace la operación: Código la capacidad se establece a 3, como debería: memoria_total / tamaño_dato = 12 bytes / 4 bytes = 3 elementos. El error viene que justamente despues al mostrarse la información de inicialización del vector escribe el siguiente mensaje en pantalla: Código
¿Alguien puede explicar porqué no me devuelve tamaño 12, 3 elementos?. Seguramente sea un error con los punteros ó el tamaño de datos, pero no soy capaz de localizarlo. Saludos, MikyGonzalez Título: Re: [Ayuda-C] Vectores y punteros (inicialización dinámica) Publicado por: ivancea96 en 12 Noviembre 2014, 21:08 pm data no es una matriz, es un puntero. Sizeof sólo se puede hacer en matrices (Ej. int var[5];, y en otros tipos claro.
Hacerlo sobre un puntero, retornará el tamaño del puntero. Para hacerlo con memoria dinámica, tendrás que guardar, como ya tienes comentado, el tamaño. Título: Re: [Ayuda-C] Vectores y punteros (inicialización dinámica) Publicado por: Miky Gonzalez en 12 Noviembre 2014, 21:24 pm @ivancea96:
Entonces, una posible solución podría ser (no explicada, pero se entiende bien): Código
O ahorrando a la larga algunas operaciones: Código
Título: Re: [Ayuda-C] Vectores y punteros (inicialización dinámica) Publicado por: ivancea96 en 12 Noviembre 2014, 21:25 pm Posible, y única solución. Bueno, con guardar el numero de elementos llega. Tener 2 variables podría hacer menos estable la estructura (por ejemplo, si te olvidas de cambiar uno de los valores)
Pero bueno, el tema en sí es ese. Título: Re: [Ayuda-C] Vectores y punteros (inicialización dinámica) Publicado por: Miky Gonzalez en 12 Noviembre 2014, 21:32 pm Muchas gracias por la ayuda, alfinal el pensar si decidir sobre el rendimiento sobre la estabilidad es cosa del programador.
Marco el tema como resuelto. Saludos. |