Boost logo

Boost :

Subject: Re: [boost] Boost.Convert+Boost.Parameter
From: vicente.botet (vicente.botet_at_[hidden])
Date: 2009-03-04 03:11:27


----- Original Message -----
From: "Emil Dotchevski" <emildotchevski_at_[hidden]>
To: <boost_at_[hidden]>
Sent: Wednesday, March 04, 2009 12:17 AM
Subject: Re: [boost] Boost.Convert+Boost.Parameter

> By the way, returning std::string doesn't guard against such errors:

> std::string to_string( foo const & );
> foo bar();
> char const * s=to_string(bar()).c_str(); //oops.

Here the problem is not that to_string returns a string but using c_str().
The same problem occurs when you use c_str on a local string. When the string goes out of scope the data pointeed by the recovred c_str is bad.

char* ext;
{

    std::string str("local");
    //..
    ext=str.c_str();
    //
} // Here ext points to a free memory area
// if ext.is used the code coudl not work.
 
Best,
Vicente


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk