재귀 C++ 프로그램에서 메모리를 할당하고 할당을 해제하는 데 문제가 있습니다. 따라서 자동 메모리 관리 솔루션을 사용하지 않고서도 필자가 경험하고있는 메모리 누수를 해결할 수있는 사람이 있는지 궁금합니다.재귀 C++ 호출의 메모리 할당
다음 코드는 근본적으로 문제를 설명합니다 (인위적인 예이지만 실수 나 간략화를 수정하십시오).
class Number {
public:
Number() { value = 1; };
Number& operator + (const Number& n1) const {
Number result = value + n1.value;
return result;
};
int value;
};
두 함수는 재귀를 수행 할 :
다수의 클래스
은 숫자의 값을 보유하는 당신이 같이 Recurse 기능에 할당 된 메모리가 유출 볼 수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);
}
, 재귀의 본질에 기반하여이 메모리를 어디에서 자유롭게 할 수 있는지 모르겠습니다.
"실수 나 간략한 부분을 수정하십시오."- 질문을 편집 할 수 있도록해야합니다. –