find and fix the source of Memory-leak

the program using destruct to free the spaces of vars,
but if it not exist the right implemention of destruct function,
the Leak will happen, so using delete instead of destruct,
if not exist destruct, delete will using deallocate - free,
if exist destruct, delete will using destruct first.

But it maybe more heavy problems exist about this.