Возьмём например Qt. Там есть xml-файл ресурсов resources.qrc
, в который можно например картинки добавлять:
<RCC>
<qresource prefix="/">
<file>icons/hello.png</file>
...
</qresource>
</RCC>
Компиляется он в сишный сорц, где все эти картинки заинлайнены как hex-литералы в глобальную переменную:
static const unsigned char qt_resource_data[] = {
// /blablabla/icons/hello.png
0x0,0x0,0xb,0x5b, ...
...
};
...
Что печалит: вот допустим загрузил я картинку в память (в объект QImage) из ресурсов – и больше мне эти ресурсы не нужны. Но они продолжают сидеть в памяти, фактически задвоение данных картинки. А если там не картинка (которая во-первых маленькая, а во-вторых в теории может и не копировать эти данные, а тупо хранить ссылку на них с флагом owner=false), а чего пообъёмнее?
Понятно, что можно тупо хранить ресурсы в отдельном файле и грузить его вручную. Но не хочется файлы плодить. Вдруг есть какая-нибудь фича в плане сабжа? Смутно помню, что винда умеет красиво в ресурсы в PE-файлах, но мне бы под лялих.