Делая это:
union{
int * integer;
char * character;
} u;
u.integer = new int;
delete u.character;
u.integer = new int[5];
delete [] u.character;
Я предполагаю, что это не сработает, если какой-либо из этих типов имеет нетривиальные деструкторы, но это нормально?