www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/04/01/21:01:06

Date: Wed, 1 Apr 1998 18:00:34 -0800 (PST)
Message-Id: <199804020200.SAA18608@adit.ap.net>
Mime-Version: 1.0
To: aquinas AT pacificcoast DOT net (Aquinas), djgpp AT delorie DOT com
From: Nate Eldredge <eldredge AT ap DOT net>
Subject: Re: Help me understand memory limits!!

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



- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019