Código
typedef struct _vectf { float *data; int cap; } vectf;
Entonces para la creación del vector uso:
Código
vectf v;
Y creo una función que inicialice el vector (reservar memoria y ajustar elementos):
Código
int init_vectorf(vectf *vectorf, int capacity) { if(!vectorf->data) return 0; vectorf->cap = sizeof(vectorf->data) / sizeof(vectorf->data[0]); //vectorf->cap = capacity; printf("Inicializado vectorf de tamano: %d (%d elementos).", (int)sizeof(vectorf->data), sizeof(vectorf->data) / sizeof(vectorf->data[0])); return 1; }
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
init_vectorf(&vectorf, 3);
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.
vectorf->cap = sizeof(vectorf->data) / sizeof(vectorf->data[0]);
El error viene que justamente despues al mostrarse la información de inicialización del vector escribe el siguiente mensaje en pantalla:
Código
mikygonzalez@public_gpg ~/ $ Inicializado vectorf de tamano: 8 (2 elementos).
¿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