On 08/20/2012 05:51 PM, ext Jason H wrote:
What can be done to combat this in C++/Qt?

Initially I thought there might be some kind of QObject d-ptr magic where the large allocations can be in the private class and re-allocate and copy the private class, without affecting the pointers that the application uses. Then have a function that runs on a QObject tree, This does not fix the overall issue, but at least it could decrease the the chances of a failed allocation. But for me, this raises as many questions as it solves. Can we guarantee the new allocations are more compact than the old ones? That seems up to the heap manager. I don't know much about that. Also, when to run it? Periodically, or only when an allocation fails?

You will not solve the fragmentation issue in Qt itself, since there is no good solution for general purpose but you can extremely reduce the problem avoiding the fragmentation for the most critical parts of your program. You can either use an object pool or a memory pool pattern, overloading the new operator, but both approaches should be fined tuned for your specific use case. I tend to use the former to handle sprites and particles in some of my games.


Br,
Adriano
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to