C++プログラムでは、定数データはどこに格納されますか?特に文字列定数ですか?文字列に反し文字列定数はどこに格納されていますか?
string_viewます、ではない:私はので、次の質問に求めています
:
Why can creating a static const std::string cause an exception?
デイモンによって答えを、最後に次のを持っています無定数の メモリを割り当て、それに定数データをコピーしてから、それを一定のふりをします。 代わりに、それは定数データに直接ポインタを管理し、それはすべて です。
このように、あなたの定数は正式には定数ではなく、そこには は割り当てなし、例外の可能性なし、ダブルメモリなし です。そして、ほとんどの場合、それはまだ見えて、弦のようなにおいがします。 string_viewは文字列ビューではヌル終端を保証していません(文字定数は を指していますので、これは無関係です)、実際には定数であることは は変更できません。まさにあなたが望むものです。
さらに定数をメモリに保存する必要はありません。メモリが有限であるためメモリに格納されている場合、それ以上のメモリがないために例外がスローされる可能性はありませんか?
コードが実行される前に、それらのメモリがロードされます。したがって、実行時例外はありません。実行することができれば、メモリは既にそこにあります。 –
関連http://stackoverflow.com/questions/349025/is-a-string-literal-in-c-created-in-static-memory https://isocpp.org/wiki/faq/ctors#static-初期注文 –