このようなことは何ですか?同じオブジェクト/変数を複数回宣言するとどうなりますか?(初心者)
static int i;
// wrapped in a big loop
void update_text()
{
std::stringstream ss; // this gets called again and again
++i;
ss << i;
text = new_text(ss.str()); // text and new_text are defined elsewhere
show_text(text); // so is this
}
は、新しいアドレスとすべてを持つスタック内に新しいインスタンスを作成しますか? char配列でsprintfを使うほうが賢明でしょうか?
ssの新しいインスタンスが作成されると、新しいメモリまたはスペースが使用されますか? – john
@john:a)どうして気になりますか? b)これは、関数が呼び出されたスタックアドレスに対応するスタックアドレスに置かれます。これは、以前のインスタンスと同じでもかまいませんが、必ずしもそうである必要はありません。作成時に内部バッファをヒープに割り当てます。そのため、関数が呼び出されるたびに内部バッファが割り当てられますが、メモリシステムが同じメモリチャンクを与えるかどうかは誰にも分かりません。だから毎回作成されますが、それはメモリを再利用するかもしれません(または気にしない人)。 – Grizzly