I'd start out by assuming a constant for each OS+compiler combination and setting about measuring that and building a table.
Then, where this fails, looking deeper. (I have spent a little time trying to research this, and the people talking about such things seem to have other things on their mind.) -- Raul On Tue, May 17, 2016 at 5:17 PM, Henry Rich <henryhr...@gmail.com> wrote: > Yes, I can find out how much stack I have used; I just don't know how to > find out what the limit is, or even if there is a limit (some systems seem > to extend the stack dynamically). If you know of a fairly > system-independent way to find out, I'd like to hear it. > > Henry Rich > > On 5/17/2016 10:16 AM, Raul Miller wrote: >> >> Hypothetically speaking, you should be able to determine something >> about the stack by examining the address of a local variable which is >> on the stack. >> >> This gives a crude way of determining stack size: write a recursive >> function which prints the address of a local variable (and flushes >> that print buffer) then calls itself again. When the program crashes >> you can inspect the starting and ending address and look at the >> difference to determine the stack size. (And, unless someone got >> fancy, you can check that all addresses in between have the same >> address offset between them.) >> >> (There might be other OS-specific or compiler-specific ways of >> determining allocated stack size.) >> >> Once you have an idea of stack size, it should be relatively simple to >> put a check on stack size somewhere convenient (for example, memory >> allocation - since that tends to be called in a lot of places). If >> you've reached some threshold, have that routine (or those routines) >> fail with a stack out-of-bounds error. >> >> That said, some compiler optimizations might defeat this approach. If >> those are detected, I guess they would need to be documented (in some >> developer-oriented document - perhaps a README for the source). >> >> I hope this helps, >> > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm