私のコードは次のようになります。
const char *msg = getMessageFromAnObject(); // gets one slot from a char **
return std::string ( msg );
さて、msgを解放する必要がありますか、それとも暗黙的に処理されますか?
ありがとう。パヴァン。
私のコードは次のようになります。
const char *msg = getMessageFromAnObject(); // gets one slot from a char **
return std::string ( msg );
さて、msgを解放する必要がありますか、それとも暗黙的に処理されますか?
ありがとう。パヴァン。
getMessageFromAnObject()
を返すという事実const char*
は、戻り値を解放する必要がないことを示唆しています。しかし、これは C API で使用される傾向がある規則にすぎません。確認する唯一の方法は、ドキュメントまたはソースがある場合はソースを確認することです。
オブジェクトの実装に依存します。返されたデータの所有者は誰ですか? オブジェクトがデストラクタでメモリを解放する場合、側でメモリを解放する必要はないかもしれません。ただし、そのオブジェクトがその関数で新しいメモリを割り当てた場合 (つまり、返されたデータの所有者である場合)、それを削除する必要があります。