Эти же метки goto используются в файле C, но разные функции

Может кто-нибудь, пожалуйста, скажите, допустимо ли использовать те же метки goto в разных функциях в одном файле C?

Чтобы объяснить, с чем я столкнулся:

function1()
{
    ...

    goto label

    ...

label:
    ...
}

function2()
{
    ...

   goto label;

    ...

label:
    ...
}

Теперь происходит то, что код после метки используется для очистки данных malloc'ed. И все дело в сбое в функции2. Я распечатал mem. места, свободные и одинаковые, освобождаются несколько раз. Это из-за всех gotos? Является ли это допустимым использование инструкции goto?

Ответ 1

Ярлыки являются локальными, поэтому вы можете использовать одну и ту же метку в нескольких функциях.

Вопрос о том, следует ли использовать goto, - это совсем другое дело, и на него нелегко ответить. Короче говоря, не используйте goto. Но, как и все (особенно когда речь заходит о программировании), существуют исключения, в которых goto может быть полезным.

Ответ 2

Как сказал здесь Йоахим, метки являются локальными; но обратите внимание, что метки локальны для функций, а не для текущего блока. Операторы goto не учитывают область охвата, за исключением охвата цельной функции.