Date: Wed, 1 Apr 1998 18:00:34 -0800 (PST) Message-Id: <199804020200.SAA18608@adit.ap.net> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" To: aquinas AT pacificcoast DOT net (Aquinas), djgpp AT delorie DOT com From: Nate Eldredge Subject: Re: Help me understand memory limits!! Precedence: bulk At 07:50 3/31/1998 GMT, Aquinas wrote: >Okay, I'm new to this C/DJGPP/Programming stuff so bear with me.... > >Can someone direct me to a good explanation of memory allocation limits, and >how to allocate large amounts of memory in DJGPP (presumably this involves >DPMI servers and such). What I'm wondering right now is.... > >The following program crashes due to a stack dump of some sort (I'm somewhat >shaky on what this means)... You're confusing the cause and the effect. *When* the program crashes (by doing something illegal), a register dump and stack traceback is printed to help you debug it. The `symify' program can help make those numbers more meaningful. > >int main() { > >double x[10000][100]; [deletia] >Obviously all this program does is try to crash my making too big an array. >It worked okay when modified to: > >int main() { > >double x[10][100]; [expunged] >So in a DPMI/Protected mode environment like DJGPP, why can't you have a >big-ass array like int x[1000000]? Is there a good explanation of this >somewhere? Any help would be much appreciated. You can, just not when it's auto. DPMI has some limitations that prevent the implementation of a dynamically expanding stack. Therefore, it's set to a fixed size on startup. FAQ section 16.9 explains the ways in which you can increase this. A simpler fix is to declare the array `static', or to make it global. Nate Eldredge eldredge AT ap DOT net