私はいくつかのC++のコードでこれを見つけた:const char *をchar []リテラルの安全と同じに設定していますか?
const char *scaryPointer = "literal";
を驚いたことに、これは(少なくとものVisual Studio 2008で)コンパイラの警告やエラーを生成しません。
これは実際には安全ですか?私はchar []リテラルのアドレスは、その行の実行が終了した後は無効であると考えました。
安全な場合は、scaryPointer
を新しいリテラルに再割り当てするとどうなりますか?古いリテラルのアドレスは自動的に解放されますか?自動ガベージコレクション?
私はthis questionを見つけましたが、私は質問/回答が私の質問&の懸念に完全には対処していないと思います。
その他:文字列リテラルの型は 'const char [N]'です。非constポインタにリテラルを割り当てる機能は、後方互換性のあるハッキングを省略したものです。 (またはその機能はまだ削除されていますか?) – Hurkyl
@Hurkyl True、しかしそれはここでは起こりません。 – Potatoswatter