0

宿題に関する質問です。私が完了したのは宿題そのものではありません。

これは関数の一部です (関連すると思われる部分のみ)。

double mean(double* pD, int* sz) {
    double *meanPtr = new double;
    *meanPtr = 0.0;
    return *meanPtr; //how to deal with a memory leak in return statement? does it leak?
}

ラストが気になります。null を指していないか、ポインターを削除していないため、メモリリークが発生しますか?

4

3 に答える 3

1

この問題を正確に解決する必要がある場合は、このようにするよりも

double mean(double* pD, int* sz) {
    double mean = 0.0;
    return mean;
}

これが単なる例であり、ポインターを使用する必要がある場合は、ポインターを返します。std::shared_ptr手動のメモリ制御を防ぐためにラップすることができます。

于 2013-05-05T08:21:40.650 に答える
1

漏れますか?

もちろん、それは地獄のように漏れます。

returnステートメントでメモリリークに対処する方法

このようにコードを構成することが有効なシナリオを想像することはできません。単純にこれを行わないでください。なぜだけではないのですか

return 0.0;

また

double foo = 0.0;
return foo;

?

于 2013-05-05T08:18:17.670 に答える