Cなどから使用できる必要があるdllがあるため、文字列オブジェクトなどを通常のように使用することはできませんが、これを安全に行う方法がわかりません..
const char *GetString()
{
std::stringstream ss;
ss << "The random number is: " << rand();
return ss.str().c_str();
}
ss がスタックから落ちたときに c 文字列が破壊される可能性はありますか? 私はそう仮定しています...
別のオプションとして、ヒープに新しい文字列を作成することもできますが、それを解放するにはどうすればよいでしょうか?
const char *GetString()
{
std::stringstream ss;
ss << "The random number is: " << rand();
char *out = new char[ss.str().size()];
strcpy(ss.str().c_str(), out);
return out;//is out ever deleted?
}
文字列だけでなく、他のものへのポインタについても同じことが言えます。