STL-containergegevens overzetten tijdens runtime bijwerken van het .so-bestand

Ik heb .so-bestanden die binnenin sommige STL-containers gebruiken. Het probleem is dat ik geïnteresseerd ben in het live downloaden van versie X van .so en deze te vervangen door versie Y van .so, maar zonder gegevens te verliezen. Als de gegevens gewoon een onbewerkt geheugen waren, kon ik de aanwijzers tijdens het overschakelen gewoon doorsturen, maar ik wilde graag gewone STL-containers gebruiken. Is er een manier om het te doen. Kopiëren is geen probleem, zolang de gegevens erin kunnen worden overgedragen. Worden ook statische destructors geactiveerd wanneer ik de oude .so?

0

1 antwoord

1) Laat X.so de gegevens opslaan in een bestand (met een versienummer!), Verwijder X.so, laad Y.so, laat Y.so de gegevens uit het bestand laden.
2) hebben in plaats daarvan versienamen, laad beide, laat Y.so de containers direct vullen vanuit de containers van X.so (controleer het versienummer!) En maak vervolgens X.so leeg.

Ik raad het echt af om de containers direct door te geven, alsof de ABI's om welke reden dan ook incompatibel zijn, het compileert prima, maar crash tijdens runtime. Dit maakt het ook gemakkelijker om opzettelijk ABI's te veranderen.

2
toegevoegd
toegevoegd de auteur ildjarn, de bron