Если я испорчу свою кучу, могу ли я ее потом почистить?
Нет, вы не можете это исправить.В основном ваша программа имеет неопределенное поведение . повреждение кучи - это то, что обнаруживается некоторыми инструментами-дезинфицирующими средствами, запускающими ваш код в режиме отладки.
Нет способа отменить *x = 1;
или восстановить значение, которое находилось там ранее.
Однако вызов free (x), удаление x и т. Д. Приведут к сбою над кодом.
Конечно, вы пытаетесь освободить то, что никогда не выделялось.
Может ли память все еще каким-то образом быть освобождена или она уже сломана без надежды?
Она сломана без всякой надежды.