const char* に std::string を代入するときの注意点
しばらく前に仕事で直したバグのmemo
const char* hoge; if(piyo) { std::string fuga = cocos2d::StringUtils::format("piyopiyo"); //生成 hoge = fuga.c_str(); //代入 }
この場合fugaはif文の外に出ると破棄されて死ぬ(ここまではわかる)
hogeはif文の外で定義されているからこれ以降も使えるかと思いきや、
fugaが破棄されるときに、hogeが参照している先の実体が死ぬということなので、つまりhogeも死ぬ
で合ってるのかな...
とりあえず、逆にすれば問題なくなる
std::string hoge; if(piyo) { const char* fuga = "piyopiyo"; //生成 hoge = cocos2d::StringUtils::format(fuga); //代入 }