Sinceramente, tanto per cominciare, non capisco perché definisci un array di tipo void **. Cioè vuoi che sia un array di puntatori void e non semplicemente un array di tipo void? Prova a contestualizzare meglio il problema... cosa vuoi fare? Hai per caso un array di tipo int che vuoi trattare come array generico?
Poi vedi se questo snippet ti può essere d'aiuto (è un po' rozzo, l'ho scritto al momento senza tanta cura ma funziona, almeno con gcc 4.4.4).
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
void *a, *tibet;
int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int i;
a = malloc(10 * sizeof(int));
if (a == NULL) {
fprintf(stderr, "Fail.\n");
return -1;
}
memcpy(a, array, 10 * sizeof(int));
for (i = 0; i < 10; i++) {
printf("%d\n", *((int *)a + i));
}
tibet = malloc(10 * sizeof(int));
if (tibet == NULL) {
fprintf(stderr, "Adieu, monde cruel.\n");
return -1;
}
memcpy(tibet, a, 10 * sizeof(int));
for (i = 0; i < 10; i++) {
printf("%d\n", *((int *)tibet + i));
}
free(a);
free(tibet); /* http://www.freetibet.org/ */
return 0;
}