Dokud se budete držet Glibc nebo jiných "normálních" alokátorů (jemalloc, tcmalloc, atd.), stav haldy bude sdílen všemi knihovnami, takže budete moci uvolnit paměť přidělenou někde s malloc
kdekoli chcete.
Teoreticky by se to dalo obejít. Například některá knihovna může být propojena s vlastní implementací malloc
/free
(pomocí triku se symbolovými skripty -Bsymbolic
), který má svou vlastní soukromou haldu, a proto nebude dobře interagovat s ostatními částmi vašeho programu. Ale nikdy jsem nic takového v reálném životě neviděl.
Kontejnery STL jsou založeny na malloc
/free
takže je možné je předávat/upravovat i přes hranice knihovny. Různé knihovny mohou být samozřejmě zkompilovány pomocí různých kompilátorů a různých nekompatibilních verzí STL (např. libstdc++, libcxx atd.), ale jejich typy kontejnerů C++ by byly různé a kompilátor by vám jednoduše nedovolil předávat je přes nekompatibilní moduly.