После закрытия скомпилированной программы появляется ошибка Debug Assertion Failed?
Как исправить?
Прочитать сообщение об ошибке для начала. Понять, что оно говорит о том, что поломана куча. Силой мысли найти место в программе которое её ломает. Если силой мысли не получается, то скомпилировать программу с какими-нибудь полезными отладочными опциями, запустить и проанализировать вывод. Для gcc это была бы опция -fsanitize=address, что у M$ для этого есть я не знаю.
Судя по ошибке, вы что-то, выделенное через new, удаляете через delete и потом все-равно используете. 

Вижу как минимум одно такое место. delete_reload_virus иногда удаляет virus, а потом что-то делает с r_vir. Но в качестве аргумента ей из viruspodMoving передается этот же самый r_vir. 

Какая-то каша у вас там творится. Одни и те же переменные использются как члены класса и передаются как указатели по всей программе. Там черт ногу сломит.