On occasion I need to write recursive routines and although those I've used so far have not run out of stack space I know that it is a possibility. Do different PCs have a different amount of stack space? Is it measureable? If so, how is it measured?
Stack Space - Does it vary from PC to PC
Blitz3D Forums/Blitz3D Programming/Stack Space - Does it vary from PC to PC It's down to the EXE and not the target machine :) So i'd imagine it was global.
If it is down to the exe then does that mean that two different PCs would run out of stack space at the same time when the same code is run?
If it is down to the exe then does that mean that two different PCs would run out of stack space at the same time when the same code is run?
I just did a quick test in Blitz 3D - I got a function to call itself repeatededly more than 43,000 times before the program crashed. Strangely it didn't produce a stack overflow error as would be expected - it just stopped running. Debug is on.Global count = 0 Recursive() Function Recursive() count = count + 1 Print count ;Added this because the code isn't producing a stack overflow error Recursive() End Function
heh, Yeah, the exe will crash at the same time on each PC.
GFK, Unusual. in release, blitz normally just closes. Perhaps an update broke the behaveor of Debug?
GFK, Unusual. in release, blitz normally just closes. Perhaps an update broke the behaveor of Debug?
With Debug on, I got the same as GfK. With Debug off, it got to about 51000. I assume thats due to the debug taking some of the stack.
Thanks, all very helpful.
I get the same as said above, about 43K with debug on and about 51K without, no error or crash the program just exits.
What actually is "stack space"? Is it how many times you can call a function from within itself?
When you call a function, the return address and parameters are placed on the stack. It's just a temporary storage space. A stack is also known as a LIFO structure (Last In, First Out).
Information about Stacksize seems to be in the executeables under Windows.
To increase or decrease the stacksize you can use "EDITBIN.EXE" and set a new size.
EDITBIN.EXE can be downloaded with the MASM32 Package.
To increase or decrease the stacksize you can use "EDITBIN.EXE" and set a new size.
EDITBIN.EXE can be downloaded with the MASM32 Package.
Would this changed stack size be per executable, or at a global scale?
If it's global, that would be a fantastic way to destroy one's Windows installation...
If it's global, that would be a fantastic way to destroy one's Windows installation...
Per executable.
:p
:p