C++やCでは文字リテラルはプログラムの終始でメモリを必要とすると習いました。
ということは、大規模なアプリなどでは、文字リテラルの使用はメモリ容量の観点から推奨されるものではないのでしょうか?
例えば
cpp
1 2const char* hoge(){ 3//何かしらの処理 4 5return "abcdefg"; 6} 7 8int main(){ 9 10{ 11const char* moji = hoge(); 12} 13 14//これ以降 関数hogeは使わないがhoge関数内の"abcdefg"のメモリは確保され続ける 15 16} 17
1回hoge()を呼び出すだけでも終始文字リテラルのabcdefg
はメモリを占有するという理解でよろしいでしょうか?
追記
言葉が足りず申し訳ないです。
たとえば、C++であればstd::string
やstd::vector
などに文字列の情報を乗せることが出来ると思います。
これであればメモリを好きな時に解放できると思うのですが、どうなのでしょう。
つまり、文字列リテラルを散りばめれば大規模なコードでは、多くのメモリを静的ストレージ?に確保しなければならないと思います。その問題を回避するために、std::string
などを利用することは理にかなっているのかと疑問に思いました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。