[Development] Question about QCoreApplicationData::*_libpaths
Thiago Macieira
thiago.macieira at intel.com
Tue Jan 19 17:07:12 CET 2016
On Tuesday 19 January 2016 10:07:43 Marc Mutz wrote:
> > That doesn't mean types without CoW are immune from the problem. There are
> > lots of discussion in the std mailing lists about constexpr data, so in
> > the
> > future a const std::string could potentially point to .rodata and thus be
> > affected by this problem too.
>
> But only _locally_. As soon as you copy the std::string, you're insulated
> from that problem, unlike in CoW, where it can strike anywhere the string
> happens to be copied to.
I am not sure. This is of course speculative since such code does not exist.
But it's entirely possible that std::string's move constructor could propagate
the reference to that .rodata.
std::string someString()
{
return constexpr_string("foo");
}
std::string g_string;
void f()
{
// move-construction
static std::string s_string = someString();
// causes move-assignment operator to be called
g_string = someString();
}
Also, people using deep-copy types tend to keep references more often than
people using cheap CoW types.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Development
mailing list