This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
RE: Classic C problems, need help!
- From: "Glover George" <dime at gulfsales dot com>
- To: "'John Love-Jensen'" <eljay at adobe dot com>
- Cc: <gcc-help at gcc dot gnu dot org>
- Date: Fri, 3 May 2002 13:39:29 -0500
- Subject: RE: Classic C problems, need help!
I guess that's the problem is how do I know? If the prototype of the
function is (char *someval) does that tell me anything? I mean, other
than well documented function headers, how do I know?
> -----Original Message-----
> From: gcc-help-owner@gcc.gnu.org
> [mailto:gcc-help-owner@gcc.gnu.org] On Behalf Of John Love-Jensen
> Sent: Friday, May 03, 2002 12:50 PM
> To: Glover George
> Cc: gcc-help@gcc.gnu.org
> Subject: Re: Classic C problems, need help!
>
>
> Hi Dime,
>
> What you are running into is the concept known as OWNERSHIP.
> I put OWNERSHIP in capitals because it is a very important
> C/C++ detail to get right -- otherwise memory leaks or
> dangling pointers, then Bad Things Happen shortly thereafter.
> Aside: Java gets around the OWNERSHIP problem by having
> garbage collection, pass-by-value for POD and
> pass-by-reference for UDT.
>
> When you pass the char* to the other routine, does it's
> contract say that it is taking OWNERSHIP of that string? And
> thus, is responsible to destruct it, when appropriate.
>
> Or does that other routine merely borrow that string for
> whatever purposes... input only? output only? input/output
> (aka update)? utility or functor (more so for C++ than C)?
>
> Without known the contract that the routine is operating
> under, I cannot tell you your proper course of action.
>
> --Eljay
>
>