Virtual destructor would be a good idea, BUT your main example does NOT need any delete!, cause obj_Derived is instanciated on stack.
When changing the example to
int main()
{
Interface *pInterface;
pInterface=new Derived();
pInterface->fun();
delete pInterface;
return 0;
}
THEN the virtual destructor will do the job.