1

複数回実行される関数があるとします。関数には以下のコードが含まれます。

static int *hello = new int;  

hello最初の実行時にのみ割り当てられますか?

4

3 に答える 3

2

はい、一度だけ割り当てられます。

しかし、別のことを提案させてください。次のような機能があるとします。

int* get_static_hello() {
    static int* value = new int;
    return value;
}

さて、あなたは次のことを非常にうまく行うことができます(100%正しいです):

int* get_static_hello() {
    static int value;
    return &value;
}
于 2013-02-06T01:57:38.903 に答える
1

はい、一度だけ割り当てられます。

関数内で静的変数を使用する際の注意事項:

  1. 関数が含まれるクラスのすべてのインスタンスは、この変数を共有します。すべてのインスタンスで同じになり、1 つが変更されると、すべてが変更されます。

  2. このクラスをスレッド化すると、静的変数へのアクセスはスレッドセーフになりません。

于 2013-02-06T01:57:32.037 に答える
-1

技術的には、プログラムの開始時に int が割り当てられます。関数が呼び出されても変更されません。変数は関数内でのみ可視であるという事実を除けば、ファイル レベルで static を宣言するのとまったく同じです。

于 2013-02-06T01:57:24.787 に答える