Re: NEVER USE return str_dup(s); !!!

From: Scatter (scatter@onramp.net)
Date: 09/30/95


> > Maybe str_dup()? (its defined in utils.c)
> 
> Don't even think about doing that !!!!!!!!!!!!
> This is the classical example of a memory leak !
> 
> Everytime you pass this point you will have some bytes of
> memory less and some garbage more in memory until you crash.
>

Excerpt from a man page follows:
------------------------------------------------------------------------ 
NAME
       strdup - duplicate a string

SYNOPSIS
       #include <string.h>

       char *strdup(const char *s);

DESCRIPTION
       The  strdup()  function  returns a pointer to a new string
       which is a duplicate of the string s.  Memory for the  new
       string  is  obtained with malloc(3), and can be freed with
       free(3).

RETURN VALUE
       The strdup() function returns a pointer to the  duplicated
       string, or NULL if insufficient memory was available.

ERRORS
       ENOMEM Insufficient memory available to allocate duplicate
              string.
-----------------------------------------------------------------------
end of man page excerpt.



How on earth does returning a strdup create a memory leak?  If value
is freed when your done with it, there is no leak.  This call seems to 
be just an enhanced malloc....


Not being argumentative, I just don't understand.



This archive was generated by hypermail 2b30 : 12/07/00 PST