изменить
Element temp = *(Element *)(storageUnit->buckets);
на
Element *temp = (Element *)*(storageUnit->buckets);
и вывести выписку из
printf("Stored correctly with data %s", (char *)(temp.data));
в
printf("Stored correctly with data %s", (char *)(temp->data));
РЕДАКТИРОВАТЬ
Не уверен, что это хороший способ сделать это, но я уверен, что вы можете изменить
Element temp = *(Element *)(storageUnit->buckets);
на
Element temp = *(Element *)*(storageUnit->buckets);
Без изменения оператора печатии получи такое же поведение.