これにより、C++ でメモリ リークや未定義の結果が発生するのではないかと考えています。
string foo()
{
char tempArray[30];
strcpy(tempArray, "This is a test");
return string(tempArray);
}
これが C の悪いことであることはわかっていますが、C++ の明確な答えは見つかりませんでした。
誰もがノーと言っていますが、メモリの割り当てがいつ解除されるかについて、私はまだ混乱していますか?
上記のメソッドを呼び出すこのメソッドがあるとしましょう
void bar()
{
string testString = foo();
}
上記のコードのどの時点で、foo() から返された文字列オブジェクトはそのデストラクタを呼び出しますか? オブジェクトtestStringにコピーされた直後ですか?