Hier ist das Szenario:
- libA.so und libB.so sind beide statisch mit derselben STL verknüpft.
- libA.so verfügt über eine öffentliche API, die einen std :: string zurückgibt.
- libB.so ruft diese Funktion auf und erhält eine Kopie der Zeichenfolge.
- Wenn die Kopie der Zeichenfolge von libB.so den Gültigkeitsbereich verlässt, wird der Destruktor der Zeichenfolge aufgerufen.
- Die Anwendung seg Fehler beim Versuch, die kopierte Zeichenfolge freizugeben.
Ich habe an anderer Stelle gelesen, dass eine solche statische Verknüpfung schlecht ist, aber ich möchte besser verstehen, warum sie schlecht ist. Kann jemand erklären, warum die obige Sequenz abstürzen würde?