Solange Sie sich an Glibc oder andere "normale" Allokatoren (jemalloc, tcmalloc usw.) halten, wird der Heap-Zustand von allen Bibliotheken geteilt, und daher können Sie irgendwo zugewiesenen Speicher mit 03
wohin du willst.
Theoretisch könnte man das umgehen. Beispielsweise können einige Bibliotheken mit einer benutzerdefinierten Implementierung von 12
verknüpft werden /20
(über Symbolskript-Trick von 34
), die über einen eigenen privaten Heap verfügt und daher nicht gut mit anderen Teilen Ihres Programms interagiert. Aber ich habe so etwas noch nie im wirklichen Leben gesehen.
STL-Container basieren auf 42
/50
damit ist eine Weitergabe/Änderung auch über Bibliotheksgrenzen hinweg möglich. Natürlich können verschiedene Bibliotheken mit verschiedenen Compilern und verschiedenen inkompatiblen Versionen von STL (z. B. libstdc++, libcxx usw.) kompiliert werden, aber ihre C++-Containertypen wären unterschiedlich und der Compiler würde Ihnen einfach nicht erlauben, sie über inkompatible Module zu übergeben.