0

私のコードは次のようになります。

const char *msg = getMessageFromAnObject(); // gets one slot from a char **

return std::string ( msg );

さて、msgを解放する必要がありますか、それとも暗黙的に処理されますか?

ありがとう。パヴァン。

4

2 に答える 2

5

getMessageFromAnObject()を返すという事実const char*は、戻り値を解放する必要がないことを示唆しています。しかし、これは C API で使用される傾向がある規則にすぎません。確認する唯一の方法は、ドキュメントまたはソースがある場合はソースを確認することです。

于 2013-11-13T09:11:58.987 に答える
2

オブジェクトの実装に依存します。返されたデータの所有者は誰ですか? オブジェクトがデストラクタでメモリを解放する場合、側でメモリを解放する必要はないかもしれません。ただし、そのオブジェクトがその関数で新しいメモリを割り当てた場合 (つまり、返されたデータの所有者である場合)、それを削除する必要があります。

于 2013-11-13T09:08:39.047 に答える