www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/06/25/06:25:46

Date: Sun, 25 Jun 2000 13:24:51 +0300 (IDT)
From: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>
X-Sender: eliz AT is
To: Martin Nilsson <skrjablin AT mail DOT com>
cc: djgpp AT delorie DOT com
Subject: Re: Unstandard mallocation needed
In-Reply-To: <384735753.961926689108.JavaMail.root@web443-mc.mail.com>
Message-ID: <Pine.SUN.3.91.1000625131959.26770C-100000@is>
MIME-Version: 1.0
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

On Sun, 25 Jun 2000, Martin Nilsson wrote:

> Q:  So can I query the malloc package to find out how big
> an allocated block is?
> 
> A:  Unfortunately, there is no standard or portable way.
> 
> but I would like to do it anyway, with DJGPP. None of the
> memory allocation routines listed in info.exe seem to fit.
> Does somebody know how to do it? It would be extra nice if
> the solution was somwhat portable to the GNU GCC compiler.

As the C FAQ tells you: there's no portable solution.  You can hack the 
sources of the DJGPP's implementation of malloc (it's in djlsr203.zip), 
if you really need it, but that would be not portable to any other 
library.

Many people want these features because they want to detect memory leaks 
in their programs.  If that's your reason as well, there are special 
packages out there for this purpose; the DJGPP FAQ mentions several of 
them in section 22.4.

> p = realloc(p, 50);    /* saving the contents of bytes
> 0..49, freeing bytes 50..99 */
> 
> thus doing a nifty "slicing" operation without having to
> copy anything. It would be nice to also be able to do the "opposite"
> operation, i e freeing the *first* n bytes,
> like this:
> 
> byte *p = malloc(100);
> . . .
> 
> p = free_the_first_n_bytes(p, 35);
> /* p now is old p + 35;
> bytes 0..34 are freed */

You can't, not in the current implementation of malloc, anyway.
It stores internal info about the allocated block in a few bytes
immediately preceding and following the allocated block.

- Raw text -


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