Tengo una matriz de valores arbitrarios, por lo que la he definido como una matriz de punteros vacíos, por lo que puedo señalar cualquier tipo de información (como int
, matrices de caracteres, etc.). Sin embargo, ¿cómo le asigno realmente un int
?Si tengo un puntero de vacío, ¿cómo puse un int en él?
Tomemos por ejemplo estas inicializaciones:
void* data[10];
int x = 100;
Mi intuición podría pensar esto, pero esto da un error de compilación:
data[0] = malloc(sizeof(int));
*(data[0]) = x;
También pensé en usar &x
, pero me tomaría la dirección de una variable local, que (a mi entender) se borrará después de salir del procedimiento. Entonces, si tengo una variable local x
, ¿cómo la obtendría correctamente en un tipo de variable de puntero nulo?
O simplemente usa una matriz de uniones, y olvida el malloc –
De hecho, buen punto. Iba con el más cercano al original. –
Gracias, pero esto también funcionaría con punteros de matriz de caracteres (char *).¿Y esto no causaría problemas de alineación en algunas plataformas? Y finalmente, si tengo un char [40], parece una pérdida de memoria reservar 40 bytes si solo voy a utilizar 4. :-) – pbean