cvs.gedasymbols.org/archives/browse.cgi   search  
Mail Archives: djgpp/1998/08/05/09:23:40

Message-Id: <m0z43Vz-000S4XC@inti.gov.ar>
Comments: Authenticated sender is <salvador AT natacha DOT inti DOT gov DOT ar>
From: "Salvador Eduardo Tropea (SET)" <salvador AT inti DOT gov DOT ar>
Organization: INTI
To: gah AT jet DOT es (Grzegorz Adam Hankiewicz), djgpp AT delorie DOT com
Date: Wed, 5 Aug 1998 10:32:41 +0000
MIME-Version: 1.0
Subject: Re: How do I free the allocated memory?
In-reply-to: <35c78e73.7896408@news.jet.es>

gah AT jet DOT es (Grzegorz Adam Hankiewicz) wrote:

> I wanted to create a function which accepts a char string, manipulates
> it at returns a new one. I thought about this:
> 
[snipped] 
> Ok, so I learned that after mallocing some memory I always have to
> free it. But know, since I am returning the pointer, I cannot free the
> memory before returning the pointer, and I cannot free the memory
> after (the compiler will never reach that line).
> 
> So, how do I free that allocated mem?

1) Don't allocate the memory before checking new_str.
2) Don't allocate a fixed ammount, calculate it.
3) Use it
    new_s=modify_string(old);
    if (new_s)
      {
       .... use it ....
       free(new_s);
      }         

Use something like that:

> char *modify_string ( char *old_str)
> {
> 	char *new_str;
> 
> 	if (new_str == NULL) return NULL;
> 	new_str = malloc (strlen(old_str)+1+ len added by the formatting string);  // That's enough for me.
> 
> 	sprintf( new_str, "Blah,blah %s", old_str);
> 
> 	return new_str;
> }


SET
------------------------------------ 0 --------------------------------
Visit my home page: http://set-soft.home.ml.org/
or
http://www.geocities.com/SiliconValley/Vista/6552/
Salvador Eduardo Tropea (SET). (Electronics Engineer)
Alternative e-mail: set-soft AT usa DOT net set AT computer DOT org
ICQ: 2951574
Address: Curapaligue 2124, Caseros, 3 de Febrero
Buenos Aires, (1678), ARGENTINA
TE: +(541) 759 0013

- Raw text -


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