[ILUG] C question [puzzled by strdup()]
conor.daly at met.ie
Thu Aug 2 10:44:46 IST 2001
On Thu, Aug 02, 2001 at 10:31:41AM +0100 or thereabouts, John P. Looney wrote:
> On Thu, Aug 02, 2001 at 12:06:47AM +0100, Conor Daly mentioned:
> > The first call to strdup() allocates memory to hold the string and sets
> > optionstring to that address. When the second strdup() call passes a
> > *new* address to optionstring, what happens the previously allocated
> > memory that optionstring *was* pointing to?
> No offense Conor, but I strongly recommend you stick to Perl, Shell, TCL
> or Java! Something that'll do your garbage collection for you.
Alas, we have no perl! Got some swine though...
I had a suspicion about strdup though but I just wanted to check in case
something really clever goes on on there.
> In the manpage for strdup, there is;
> "Memory for the new string is obtained with mal loc(3), and can
> be freed with free(3)"
> It should read "For crying out loud, free this as soon as you can, or
> you'll be reaching for ElectricFence within a week".
Interestingly though, all this bounds checking and stuff I'm doing is
something of a novelty here. Consider the function read_to_endofline() that
uses fgetc() to read chars until it reaches a '\n' *without* checking for
EOF! The program using it was eating '-1's from an empty stream for about
two days before anyone noticed!
Met Eireann, Glasnevin Hill, Dublin 9, Ireland
Ph +353 1 8064276 Fax +353 1 8064275
9:37am up 69 days, 20:39, 8 users, load average: 2.00, 2.00, 2.00
More information about the ILUG