Consider:
struct foo { int a; int b; }; void* p = (void*)malloc(sizeof(struct foo)); ((foo*)p)->a; // Do something. free(p); // Is this safe?