タグ

C++と文字列リテラルに関するyowanoのブックマーク (1)

  • 文字列のメモリ保持期間とポインタについての疑問 - OKWAVE

    場合によります。 >char* s; >s = "abcdefg"; >この"abcdefg"により確保された領域がいつまで保持されるのかわかりません。 >・これを実行しているメソッドを抜けるまでなのか? >・free(s)するまでなのか?(free(s)しなければいけないのか?) この場合は、プログラムがメモリにロードされた時点でメモリ上に"abcdefg"が配置され、 その先頭アドレスを char型のポインタ変数sに代入しているだけです。 # 「文字列リラテル」で検索されるとよいでしょう。 で、メモリ上に配置され"abcdefg"は、プログラムが終了するまで有効ですから解放する必要はありません。 # ちなみに「定数」扱いになりますので普通は書き換えできません。 >オブジェクトを生成して、そのメンバ変数に >obj1->field1 = "value"; >というように格納して利用する

    文字列のメモリ保持期間とポインタについての疑問 - OKWAVE
    yowano
    yowano 2014/01/02
    文字列リテラルは、プログラム終了時まで保存される。char* str = "abcde"; このstrは、文字列リテラルの先頭アドレスを持っているだけ。strの寿命と文字列リテラルの寿命は相関がない。
  • 1