Стандарт C говорит, что вы не можете использовать free () для обычных указателей. Она говорит, что функция free () выполняет свое действие, когда она используется с функциями динамического распределения памяти, такими как malloc (), calloc () и realloc(). Даже если вы попытаетесь использовать free (), передав нормальный указатель, который не связан с malloc (), calloc () и realloc (), это приводит к неопределенному поведению, это может привести к ошибке сброса ядра или аварийному завершению икод работает с вашим компилятором, потому что компилятор может быть разработан по-другому (например, компилятор обучения студентов), код работает даже с TURBO c, но он действительно терпит неудачу, когда вы работаете с компиляторами cygwin или gcc. Я предлагаю вамРаботайте с компиляторами cygwin и gcc, а не с другими компиляторами, потому что они дают вам огромный опыт и знания, даже если вы можете изучить концепции многопоточности.