21

同じ C ファイルの異なる関数で同じ goto ラベルを使用することが許容されるかどうか教えてください。

私が直面していることを説明するには:

function1()
{
    ...

    goto label

    ...

label:
    ...
}

function2()
{
    ...

   goto label;

    ...

label:
    ...
}

今起こっていることは、ラベルの後のコードが malloc されたデータのクリーンアップに使用されていることです。そして、すべてが function2 でクラッシュしています。メモリを印刷しました。解放されている場所と同じ場所が複数回解放されています。これは後藤のせいですか?これは goto ステートメントの有効な使用法ですか?

4

2 に答える 2

25

ラベルはローカルであるため、複数の関数で同じラベルを使用できます。

ただし、使用する必要があるかどうかという質問gotoは別の問題であり、簡単には答えられません. 要するに、使用しないでくださいgotogotoただし、すべての場合と同様に (特にプログラミングに関しては) 、役立つ場合がある例外があります。

于 2013-04-25T07:35:59.503 に答える