X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-bounces using -f Message-ID: <3CB71962.1D21ED00@yahoo.com> From: CBFalconer Organization: Ched Research X-Mailer: Mozilla 4.75 [en] (Win98; U) X-Accept-Language: en MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp 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> <2593-Fri12Apr2002115014+0300-eliz AT is DOT elta DOT co DOT il> <3CB6C8FA DOT 45A31BB7 AT yahoo DOT com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 83 Date: Fri, 12 Apr 2002 17:41:22 GMT NNTP-Posting-Host: 12.90.171.93 X-Complaints-To: abuse AT worldnet DOT att DOT net X-Trace: bgtnsc05-news.ops.worldnet.att.net 1018633282 12.90.171.93 (Fri, 12 Apr 2002 17:41:22 GMT) NNTP-Posting-Date: Fri, 12 Apr 2002 17:41:22 GMT To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com CBFalconer wrote: > > Eli Zaretskii wrote: > > ... snip ... > > > > 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. > > He might also try my suggested new malloc package for DJGPP, which > I have mounted at: > > > > which, among other things, goes to some pains to minimize the > realloc work. I have heard nothing back on it from anyone, either > good or bad. I just took this thing to experiment with, and get the following anomaly: ................. [1] c:\c\malloc>gcc -o evilalgo.o evilalgo.c [1] c:\c\malloc>gcc -o evilalgo.exe evilalgo.o evilalgo.o(.text+0x1f8):crt0.s: multiple definition of `__exit' c:/djgpp/lib/crt0.o(.text+0x1f0):crt0.s: first defined here evilalgo.o(.text+0x2da):crt0.s: multiple definition of `__sbrk' c:/djgpp/lib/crt0.o(.text+0x2d2):crt0.s: first defined here evilalgo.o(.text+0x4c4):crt0.s: multiple definition of `_crt0_init_mcount' c:/djgpp/lib/crt0.o(.text+0x4bc):crt0.s: first defined here evilalgo.o(.text+0x2f8):crt0.s: multiple definition of `__brk' c:/djgpp/lib/crt0.o(.text+0x2f0):crt0.s: first defined here evilalgo.o(.text+0x8):crt0.s: multiple definition of `start' c:/djgpp/lib/crt0.o(.text+0x0):crt0.s: first defined here collect2: ld returned 1 exit status ................... while "gcc evilalgo.c" works fine, generating file a. (NOTE: gcc works through an alias here, imposing -W -Wall -ansi -pedantic -gstabs+) While I look for a reason, does anybody know of any? My malloc.o is in the directory, but has not been linked (yet). The slightly revised source follows: > /* From djgpp mail list - an evil algorithm */ > #include > #include > > typedef struct { > char af[10]; > char name[10]; > } record; > > record **dt, *d; > > int main(int argc, char ** argv) > { > unsigned long n = 1000; /* was 200000L */ > unsigned int count; > > if (argc > 1) n = strtoul(argv[1], NULL, 10); > > for (count = 0; count < n; count++){ > dt = (record **)realloc(dt, (count + 1) * sizeof(record *)); > d = dt[count]; > d = (record *)calloc(10, sizeof(record)); > if (!(count & 0xfff)) putc('*', stderr); > } > return(0); > } /* evilalgo */ -- Chuck F (cbfalconer AT yahoo DOT com) (cbfalconer AT worldnet DOT att DOT net) Available for consulting/temporary embedded and systems. USE worldnet address!