[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