Hi Fred,
The stack is set to an arbitrarily small value when the program is first
loaded. The stack then grows on demand to meet the needs of the thread.
This is implemented by placing a page with PAGE_GUARD access at the end of
the current stack. When your code causes the stack pointer to point to an
address on this page, an exception occurs. The system will commit your
desired page. The 1M was the default maximum stack size that can be commit.
To work around the recursive problem, you can handle the over flow
exception, commit more page yourself, for more details please refer to
"Trapping the Exception with __try and __except (Full Solution)" in the
link below:
http://support.microsoft.com/default...b;en-us;315937
Hope this helps,
Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! -
www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.
--------------------
| From: "Fred Mellender" <no************ ****@frontierne t.net>
| Newsgroups: microsoft.publi c.dotnet.langua ges.csharp
| References: <#o************ **@TK2MSFTNGP09 .phx.gbl>
<#p************ **@TK2MSFTNGP11 .phx.gbl>
<OG************ **@TK2MSFTNGP09 .phx.gbl>
| Subject: Re: Stack Size
| Lines: 60
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <ho************ *****@news01.ro c.ny>
| X-Complaints-To:
ab********@fron tiernet.net
| X-Trace:
52616e646f6d495 6a7c2f1d1725bf9 c71a51cc963cf8a f61d4bf1cb8db7c e0b5f504894fa32 0
62d943d8f53fcba f8e94930c7856e7 b450326e8242345 776f33dd68c3bef 19dbe75a3af0e5b 3
07cff1b21e7500f 5b9f8df775dc4ec af6611d9ba8fc8c b03247f51d5bca1 0438b45eabb4
| X-Abuse-Info: Please be sure to forward ALL headers so that we may
process your complaint properly.
| NNTP-Posting-Date: Sat, 11 Oct 2003 12:07:41 GMT
| Date: Sat, 11 Oct 2003 12:07:41 GMT
| Path:
cpmsftngxa06.ph x.gbl!TK2MSFTNG P08.phx.gbl!new s-out.cwix.com!ne wsfeed.cwix.co
m!prodigy.com!r ip!news.webusen et.com!peer01.c ox.net!cox.net! newshosting.com !
news-xfer2.atl.newsh osting.com!news-feed01.roc.ny.f rontiernet.net! nntp.front
iernet.net!news 01.roc.ny.POSTE D!not-for-mail
| Xref: cpmsftngxa06.ph x.gbl microsoft.publi c.dotnet.langua ges.csharp:1907 09
| X-Tomcat-NG: microsoft.publi c.dotnet.langua ges.csharp
|
| If the answer is not too arcane can someone explain to me why the stack
size
| had to be set at compile/load time. Why did the c# designers not grow it
| as required in virtual memory, which (so far as I know) is done by most
| other language implementations , and let an "out of memory" exception
occur?
|
| In an object oriented language where most objects are allocated on the
heap,
| perhaps it is not so important. Nevertheless, some problems are most
easily
| coded as a recursive function and, if even a few value types are used, a
1MB
| stack does not seem like much.
|
| E.G. (not too realistic, maybe, given that a double would not hold the
| answer anyway):
| public static double fact(double x)
|
| {
|
| if (x <= 0)
|
| return 1;
|
| return x *fact(x-1);
|
| }
|
| overflows when fact(35000) is called. ("An unhandled exception of type
| 'System.StackOv erflowException ' occurred in Foo.exe"). So less than 35000
| recursive calls can occur in a function that uses type double as a
| parameter?
|
| "Ben R. Bolton" <xb*******@hotm ail.com> wrote in message
| news:OG******** ******@TK2MSFTN GP09.phx.gbl...
| > Thanks Mattias,
| >
| > I had hoped there was a compiler option, but at least there is a way.
| >
| > Ben
| >
| >
| > "Mattias Sjögren" <ma************ ********@mvps.o rg> wrote in message
| > news:%2******** ********@TK2MSF TNGP11.phx.gbl. ..
| > > Ben,
| > >
| > > >Is it possible to change the StackSize in .NET? If so how?
| > >
| > > Editbin.exe /stack
| > >
| > > should work, I think.
| > >
| > >
| > >
| > > Mattias
| > >
| > > --
| > > Mattias Sjögren [MVP] mattias @ mvps.org
| > >
http://www.msjogren.net/dotnet/
| > > Please reply only to the newsgroup.
| >
| >
|
|
|