code_junkie

Memory Allocation in Recursive C++ Calls

Nov 13th, 2011
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. class Number
  2. {
  3. public:
  4. Number() { value = 1; };
  5.  
  6. Number& operator + (const Number& n1) const
  7. {
  8. Number result = value + n1.value;
  9. return result;
  10. };
  11.  
  12. int value;
  13. };
  14.  
  15. Number& recurse(const Number& v1)
  16. {
  17. Number* result = new Number();
  18.  
  19. Number one = Number();
  20. *result = *result + recurse(one);
  21.  
  22. return *result;
  23. }
  24.  
  25. int main(...)
  26. {
  27. Number answer = Number();
  28. answer = recurse(result);
  29. }
  30.  
  31. Number& operator + (const Number& n1) const
  32. {
  33. Number result = value + n1.value;
  34. return result;
  35. };
  36.  
  37. Number& recurse(const Number& v1)
  38. {
  39. Number result;
  40.  
  41. Number one;
  42.  
  43. // I assume there is a step here to determine if the recursion should stop
  44.  
  45. result += recurse(one);
  46.  
  47. return result;
  48. }
  49.  
  50. Number* recurse(const Number& v1)
  51. {
  52. Number* result = new Number();
  53.  
  54. Number one;
  55. if( v1.value >= 2 )
  56. {
  57. Number temp;
  58. temp.value = v1.value - 1;
  59. Number* partialResult = recurse( temp ); //capture the object to delete
  60. *result = *partialResult + one;
  61. delete partialResult; //delete the object
  62. }
  63.  
  64. return result;
  65. }
  66.  
  67. int main()
  68. {
  69. Number result;
  70. result.value = 15;
  71.  
  72. Number *answer;
  73. answer = recurse(result);
  74. delete answer;
  75. }
  76.  
  77. Number recurse(const Number& v1)
  78. {
  79. Number result;
  80. Number one;
  81.  
  82. retun result + recurse(one);
  83. }
Add Comment
Please, Sign In to add comment