を再利用しますそれは生涯で、 "c"のスペースを再割り当てする代わりに、単にスペースを使用しますか?それがクラスではうまくいかない場合は、doubleやsize_tのような "伝統的な"型で動作しますか?は、私は次のコードを持っている場合は最適化をコンパイラおよび例えば、変数
頻繁に呼び出される関数の割り当てコストを最小限に抑えようとしています。しかし、関数の中のどこかでは、古い変数はすでに役に立たないと感じていますが、新しい変数はその名前と呼ばれるべきではありません。コンパイラは私のために変数を直接再利用しますか?
myClass a(...);
something(a);
if(...){
#define c a
c=myClass(...);
something c;
#undef c
}
あなたのプロファイラは、これがアプリケーションのホットスポットであると伝えますか?生成されたアセンブリの内容は何ですか? – GManNickG
方法について: '{myClass a; a.doSomething(); } {if(...){myClass c; c.doSomething(); }} ' –
関数本体に短いスコープがあっても、GCCはスタック空間を非常にうまく再利用するのに使いませんでした。しかし、私はそれがより良くなっていると信じています。 –