Re: std::string::data()
On 30 May, 00:42, Alberto Ganesh Barbati <AlbertoBarb...@libero.it>
wrote:
The real problem, pointed out elsewhere in this thread by Lance Diduck,
is that some strings optimize memory management by implementing
copy-on-write.
I believe this is a false myth. After having read several threads on
string on this newsgroup and on comp.std.c++, I came to the conclusion
that there are actually *no* industrial-strong implementation using
copy-on-write that are also fully standard compliant.
I'm not saying
that such an implementation can't exist, but COW comes at a greater cost
than one may expect, especially in MT environments, so implementors
have, in time, simply decided to drop it. If I'm mistaken, please let me
know.
Well, GNU C++ std::basic_string<> is reference counted. I don't know
what constitutes an "industrial-strong" implementation, but it's been
successfully used for years.
As to standard conformance, there was a thread named "Vindicated?
Sutter and COW Strings". IIRC, one idea mentioned in that thread was
that std::basic_string<> interface as it is defined by the standard
does not facilitate for efficient copy-on-the-write implementations.
http://groups.google.co.uk/group/comp.lang.c++.moderated/msg/0aa848d97e205d72
There is always a choice between a standard conformant
std::basic_string<>, or not so standard one, that which allocates and
copies memory conservatively.
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]