6

たとえば、変数が一度使用されたら、C変数を削除、つまり使用から削除できるかどうか疑問に思っていますか?

少し前にこの問題について考えていたとき、1 つの疑問が頭に浮かびました。

Cには多くのデータ型があり、単純なコードで整数などのデータ型の変数を作成できます

int i;

この方法で変数を作成したら、将来使用する必要がない場合、どのように「削除」すればよいでしょうか?

ネットで検索しましたが、これを行う C コマンドは見つかりませんでした。「kが削除された」とは、「kが存在しなくなった」という意味です。つまり、変数が必要なくなったら、それは無駄であり、削除する必要があります。

C は関数を提供しますが、 、 またはfree()を使用して割り当てられたメモリでのみ機能します。calloc(), malloc()realloc()

intでは、一度使用された変数をどのように削除するのでしょうか?

4

2 に答える 2

15

あなたはそうしない。オブジェクトの存続期間は、スコープ外になると終了します(自動的にクリーンアップされるため、自動オブジェクトと呼ばれます)。

例えば

void foo() {
    int j = 3;

    while (blah) {
        int i = 5;
    }

    // i no longer exists
}

// j no longer exists
于 2012-06-09T12:04:46.840 に答える
5

Cには、オブジェクトの存続期間を決定するオブジェクトの保存期間の概念があります。

  • 静的ストレージは、プログラムの実行全体にわたって存続します
  • スレッドストレージはスレッドが終了するまで存続します
  • 自動ストレージは、周囲のブロックがなくなるまで存続します
  • 割り当てられたストレージには、を介した明示的な割り当て解除が必要ですfree()

割り当てられたストレージは別として、言語ランタイムはメモリの再利用を処理します(たとえば、スタックポインターを減らして呼び出しフレームを破棄し、自動ストレージを「解放」します)。

于 2012-06-09T12:18:50.433 に答える