I wonder if i misunderstood something: does a copy constructor from std::string
not copy its content?
string str1 = \"Hello World\"
It is entirely possible that your string
implementation uses copy-on-write which would explain the behavior. Although this is less likely with newer implementations (and non-conforming on C++11 implementations).
The standard places no restriction on the value of the pointer returned by c_str
(besides that it points to a null-terminated c-string), so your code is inherently non-portable.