Why so much stack space used for each recursion?

Posted by Harvey on Stack Overflow See other posts from Stack Overflow or by Harvey
Published on 2010-03-22T09:04:27Z Indexed on 2010/03/22 9:21 UTC
Read the original article Hit count: 438

Filed under:
|
|
|

I have a simple recursive function RCompare() that calls a more complex function Compare() which returns before the recursive call. Each recursion level uses 248 bytes of stack space which seems like way more than it should. Here is the recursive function:

void CMList::RCompare(MP n1) // RECURSIVE and Looping compare function
{
  auto MP ne=n1->mf;
  while(StkAvl() && Compare(n1=ne->mb))
    RCompare(n1); // Recursive call !
}

StkAvl() is a simple stack space check function that compares the address of an auto variable to the value of an address near the end of the stack stored in a static variable.

It seems to me that the only things added to the stack in each recursion are two pointer variables (MP is a pointer to a structure) and the stuff that one function call stores, a few saved registers, base pointer, return address, etc., all 32-bit (4 byte) values. There's no way that is 248 bytes is it?

I don't no how to actually look at the stack in a meaningful way in Visual Studio 2008.

Thanks

© Stack Overflow or respective owner

Related posts about visual-c++

Related posts about mfc