[cairo] return type of cairo_status_to_string ()
Bill Spitzak
spitzak at gmail.com
Tue Aug 17 17:36:34 PDT 2010
M Joonas Pihlaja wrote:
> On Tue, 17 Aug 2010, Daniel Goldman wrote:
>
>> What bad thing does the const keyword prevent here? If nothing bad prevented,
>> then I think it should be the simpler, more default "char *".
>
> In C, returning a const char * from a function tells the caller that
> they do not need to call free()
I have never heard that one, in my experience you NEVER call free() on
something you did not allocate yourself. In fact most functions
returning char* are pointing into larger buffers indicating a location
to modify and you certainly should not call free() on that!
The reason is that it is desirable to store string constants in
read-only memory. This is a great security feature as they cannot be
altered to unexpected values, identical strings can map to the same
location, and I think it can improve the speed as writable pages have
more overhead in VM than read-only ones.
Making the return type const char* instead of char* means that mistakes
using read-only strings will be detected at compile time rather than run
time.
Currently G++ produces a nasty warning if you try to return a string
constant from a function declared as char*, or try to initialize a char*
table with string constants.
More information about the cairo
mailing list