X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-bounces using -f Date: Fri, 12 Apr 2002 11:50:15 +0300 From: "Eli Zaretskii" Sender: halo1 AT zahav DOT net DOT il To: djgpp AT delorie DOT com Message-Id: <2593-Fri12Apr2002115014+0300-eliz@is.elta.co.il> X-Mailer: emacs 21.2.50 (via feedmail 8 I) and Blat ver 1.8.9 In-reply-to: <5.0.2.1.0.20020411161942.00bd1eb0@pop.mail.yahoo.com> (jlsgarrido AT yahoo DOT com) Subject: Re: New DJGPP hogs memory (was: I need help) References: <5 DOT 0 DOT 2 DOT 1 DOT 0 DOT 20020410122845 DOT 00bcbbd8 AT pop DOT mail DOT yahoo DOT com> <5 DOT 0 DOT 2 DOT 1 DOT 0 DOT 20020410122845 DOT 00bcbbd8 AT pop DOT mail DOT yahoo DOT com> <5 DOT 0 DOT 2 DOT 1 DOT 0 DOT 20020411161942 DOT 00bd1eb0 AT pop DOT mail DOT yahoo DOT com> Reply-To: djgpp AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk > Date: Thu, 11 Apr 2002 16:25:50 -0500 > From: =?iso-8859-1?Q?=22Jos=E9_L=2E_S=E1nchez_Garrido=22?= > > > typedef struct { > char af[10]; > char name[10]; > > } record; > > record **dt, *d; > > int main (void) { > > int count; > > for(count=0; count<200000L; count++){ > dt=(record **)realloc(dt, (count+1)*sizeof(record *)); > d=dt[count]; > d=(record *)calloc(10, sizeof(record)); > } > return(0); > } Can you please tell what memory consumption did you see with each one of the two versions of the compiler and the library? Also, you don't say what compiler switches did you use to compile and link the program. Anyway, based on looking into this program, I think the changed behavior is due to the new version of malloc in libc.a from DJGPP v2.03 (so it has nothing to do with the compiler). The program uses a very bad algorithm--reallocating an array on each iteration, increasing its size by 1. It also allocates the memory in lots of very small chunks. So it doesn't surprise me that you run out of free memory. My recommendation is to modify the algorithm to do a better allocation. If you cannot do that for some reason, you can find the old implementation of malloc in djlsr203.zip, file name src/libc/ansi/stdlib/fmalloc.c; link it with your program, and you will get the old behavior.