У меня есть .so файлы, которые внутри них используют некоторые STL-контейнеры. Проблема в том, что меня интересует живая выгрузка версии X.so и замена ее версией Y.so, но без потери данных. Если данные были только сырой памятью, я мог бы просто переслать указатели во время переключения, но я бы хотел использовать обычные STL-контейнеры. Есть ли способ сделать это. Копирование не является проблемой, если данные могут быть переданы. Также будут активированы статические деструкторы, когда я выгружу старый .so?
1) Имейте X.so сохраните данные в файл (с номером версии!), Выгрузите X.so, загрузите Y.so, у Y.so загрузите данные из файла.
2) вместо этого имейте имена версий, загрузите оба, Y.so заполните контейнеры непосредственно из контейнеров X.so (проверьте номер версии!), Затем выгрузите X.so.
Я действительно не рекомендую передавать контейнеры напрямую, как если бы ABI были несовместимы по какой-либо причине, он будет компилироваться отлично, но сбой во время выполнения. Это также облегчает преднамеренное изменение ABI.