I am curious about how to find out what the maximum stack size is for a particular compiler/os combo. I am using Ubuntu/GNU compiler. A few questions I have in addition are:
- Who controls the default maximum stack size; OS or compiler?
- Is the default maximum scaled according to total memory? (ie a machine with 2gb memory would have larger default size than a machine with only 512mb) For this example both machines are same os/compiler setup, just different amounts of system RAM.
Thanks!
The compiler typically. The OS/hardware does limit it to a certain extent. Default is 8MB on linux IIRC. Think of
ulimit -son Linux (to change stack sizes).No. Until and unless you do it yiurself.You can alter stack sizes via compiler switches.
or
The standard is based on an abstract machine and does not really concern itself with hardware or stacks or heaps. It does talk about an allocated store and a free store. The free store is where you’d be if you are calling new (mostly). FWIW, an implementation can have only one memory area masquerading as both stack and heap when it comes to object allocation.
Your question, therefor, boils down to be an implementation specific issue rather than a language issue.
Hope this helps.