2011-02-08 22 views
0

いくつかの条件が満たされた後、またはスタティックキーワードを使用してスタティックエリア内の組み込みデータトークンを解放するにはどうすればよいですか?スタティックエリアに組み込みのデータトークンを解放するにはどうすればいいですか

ex;

int func2 (void) { 
     static int i = 0 ; 

     // some work ; 
     if (i == 20) { 
      return i ; 
      // some thing to give static memory place to memory 
    } 
    } 

    int main (void) { 
     //under some condition, call func2 iteratively 
     // when return value is 20, then break the iteration 
    } 
+0

ここで「無料」にしたい静的領域とは何ですか? 「私」?もしそうなら、それを無料にすることはどういう意味ですか?ちなみに、 'static i = 0'宣言には' int'がありません。 – Emmanuel

答えて

1

することはできません(私はint型*であり、あなたが割り当てて手動で削除しない限り)しかし:あなたが行うときstatic i = 0;ことを最初に作成した電話してiを初期化します。 func2が2回目に呼び出されると、この行は無視されます。iがすでに存在します。

int func2(void) { 
    static int i = 0; 
    std::cout << "i " << i << std::endl; 

    i += 20; 
    return i; 
} 

int main() { 
    func2(); 
    func2(); 
    return 0; 
} 

アウトは以下となります。

i 0 
i 20 

しかし:

int func2(void) { 
    static int i = 0; 
    i = 0; // look 
    std::cout << "i " << i << std::endl; 

    i += 20; 
    return i; 
} 

int main() { 
    func2(); 
    func2(); 
    return 0; 
} 

が出ます:

i 0 
i 0 

しかし、あなたは本当にここに静的なものが必要なのですか?

関連する問題