再帰的な C++ プログラムでメモリの割り当てと割り当て解除に問題があります。自動メモリ管理ソリューションを使用せずに、誰かが私が経験しているメモリリークを解決するのを手伝ってくれるのではないかと思います.
次のコードは基本的に問題を説明しています (これは不自然な例ですが、間違いや簡略化を修正してください)。
数値の値を保持する数値クラス:
class Number {
public:
Number() { value = 1; };
Number& operator + (const Number& n1) const {
Number result = value + n1.value;
return result;
};
int value;
};
再帰を実行する 2 つの関数:
Number& recurse(const Number& v1) {
Number* result = new Number();
Number one = Number();
*result = *result + recurse(one);
return *result;
}
int main(...) {
Number answer = Number();
answer = recurse(result);
}
ご覧のとおり、再帰関数で割り当てられたメモリがリークされていますが、再帰の性質に基づいて、このメモリをどこから解放できるかわかりませんか?