X-Authentication-Warning: mail.bio.uva.nl: Host biomacI-138.bio.uva.nl [145.18.167.138] claimed to be [145.18.167.138] Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Tue, 8 Jun 1999 09:02:49 +0200 To: djgpp AT delorie DOT com From: dlanor AT dds DOT nl (Dlanor Blytkerchan) Subject: Re: malloc() problem Reply-To: djgpp AT delorie DOT com >> Here's a weird little problem: when I try to allocate a buffer with >> malloc(), it returns NULL. The buffer I am trying to allocate is just under >> 34K, and I have at least 4 MB free (probably much more), and at least 400K >> in low memory. This happens regardless of where I do it (inside or outside >> of RHIDE) and regardless of anything I do that the FAQ suggests. Even >> directly calling that heap extender thingy as described in FAQ chaper 15 (I >> forgot the name) returns -1 (probably why I'm getting NULL back from >> malloc()). >> The line I'm using is this: >> >> bufferType *buffer; >> bool rc = true; >> >> rc = ((buffer = (bufferType*)malloc(sizeof(bufferType))) != NULL); >> if (!rc) { >> start complaining and quit.. >> } // if >> >> Does anyone have a better way of allocating memory than this & is there >> something I'm missing/overlooking here, or is this particular piece of >> coding simply jynxed and should I simply retype it? > >Should be right (though something like `buffer = malloc(n); if (!buffer) >die();' is a bit easier to follow). Possibly, but not the way I generally program: rc is a global variable. If set to false, no I/O is done any more, the problem is reported as soon as the program is back at it's core and then dies. >What does go32-v2 print out? And what OS and DPMI server do you use? The above memory value (the 4 MB) is taken from go32-v2, the 400 K from mem, and the 34 K from sizeof(). I think I checked this quite thouroughly - I just can't find the problem so I decided to post a message and go to sleep - it was 1 am ;-) Greetz! Dlanor