On Thursday 12 November 2015 23:56:20 Igor Mironchik wrote: > > First of all, allocating memory when throwing exceptions is bad practice. > > Avoid it by redesigning your code. > > Can you, please, explain why allocating memory when throwing exception > is bad practice? Or just can you give a link on any article about this > question.... Thank you.
Because allocating memory in response to an OOM situation is stupid, so std::exception doesn't require it; instead, it uses a pointer that is expected to be valid forever. The exception mechanism uses a pre-allocated buffer so that exceptions can still work in an OOM condition. > > Because toLocal8Bit() returns a QByteArray and QByteArray has an operator > > const char*(). Why would it not be possible? > > > > Do note that it compiles, but it's probably incorrect because > > std::runtime_error will probably be carrying a dangling pointer. > > > > Like I said, you should redesign so you don't allocate memory when > > throwing > > exceptions. > > Thank you, I understood. Just interesting why Qt 5.5.1 on Windows > compiled without QT_NO_CAST_FROM_BYTEARRAY and on Linux with this one? It isn't. Your test is faulty. The only piece of code that turns that macro on is moc's own build. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest