"I have a pointer to a struct stored in an entity skill."

This means that my.skill[99] == pointerToStruct. The address operator is unnecessary here, as you already have the address stored in the skill. Thus it should rather read: free(my.skill[99]).