This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: freeing part of memory
- From: £ukasz <blurrpp at yahoo dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Tue, 5 Jan 2010 02:45:05 -0800 (PST)
- Subject: Re: freeing part of memory
--- On Tue, 1/5/10, £ukasz <blurrpp@yahoo.com> wrote:
> From: £ukasz <blurrpp@yahoo.com>
> Subject: Re: freeing part of memory
> To: thomas.martitz@student.htw-berlin.de
> Date: Tuesday, January 5, 2010, 11:42 AM
>
>
> --- On Tue, 1/5/10, Thomas Martitz <thomas.martitz@student.HTW-Berlin.de>
> wrote:
>
> > From: Thomas Martitz <thomas.martitz@student.HTW-Berlin.de>
> > Subject: Re: freeing part of memory
> > To: gcc-help@gcc.gnu.org
> > Date: Tuesday, January 5, 2010, 3:02 AM
> > Am 05.01.2010 02:21, schrieb
> > £ukasz:
> > > Hi, i have simple question about freeing only
> part of
> > allocated memory.
> > > Supouse that at begining of computatnion i
> reserwed (
> > malloc,relloc, etc) n bytes, after end of compuation i
> need
> > only n/2 bytes so i want to free the rest of n/2
> bytes. I
> > could ofcourse use freeloc(beg.adress+n/2) after
> creating in
> > memory apropriate structure usualy created by malloc
> to
> > force freeloc to free only n/2 bytes, but maybe there
> is
> > another way, for example using new and delate.
> > >
> > > Lukas
> > >
> > >
> > >
> > >? ?
> >
> > You use realloc with n/2. This will (very likely) in
> fact
> > allocate in a
> > new ram area, so you possibly want to copy over the
> data
> > from the old
> > allocated space. If you are done with the space you
> > allocated first, you
> > free the whole thing.
> >
> > You cannot use "freeloc(beg.adress+n/2) " (assuming
> you
> > mean free() here).
> >
> > That's really a general C question, not a gcc related
> one.
> >
> > Best regards.
> >
Yep i know that is strictly C question but i knew that some
one would know answer here ;). Any way free is possible to
use, but you have to cheat somehow, when you use malloc,
small structure is created wchich tells 'free', amoung
others information, how many bytes have to be freed, if u
create similar stricture in aprpriate place with changed
amount of memory to be freed, you can use free. Solution
with copy is too long so if there are no other ways, better
is to reserve big pice of memory and create for ex. in
assembler your own way to manage memory inside this.
Best regards