静的キーワードは関数によって返された値を保存しますか?
質問
私は私が書いているプログラムにいくつかの機能を持っています私は非常に遅い関数で計算する必要がある値を使用しています。プログラムが再実行されるたびにこの値が変わりますので、静的値を格納するだけではありません。以下は例です。
void this_gets_called_frequently()
{
static int value = slow_function();
//do stuff with the above value
}
.
私の主な問題ここでは、覚えていなくても、機能していないプログラムの一つではありません。私は実際にグローバル変数を初期化し、その値を変更したくないので、計算されたら、変更されません。上記のようにstaticキーワードを使用すると、上記の関数を1回計算するためだけに呼び出しますか?Contキーワードがそこに追加されましたか?
誰もがいていない、これは完全に答えました!
解決
はい、ローカルのstatic
変数の初期化が一度だけ発生します(私は一部のコンパイラバージョンを思い出しても、ここではマルチリーダーに問題がある可能性があります)。
const
は必要ありません、この場合、それは主に読みやすさと味の問題です。
他のヒント
上記のようにstaticキーワードを使用すると、上記の関数を1回計算するだけです。
はい、this_gets_called_frequently
の最初の呼び出し
Contキーワードがそこに追加されますか?
いいえ。しかし、ドキュメンテーション値のためのconst
を追加します。
使用は、コンパイラで使用可能な場合は、C ++ 11のスレッドローカル変数を使用できます。Windows上にある場合は、類似のTlsAlloc
APIを使用できます。Win32の夜明け以来あります。
所属していません StackOverflow