GNU/Linux >> Znalost Linux >  >> Linux

Přidělování a přidělování paměti přes hranice sdílené knihovny

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.


Linux
  1. Jak odstranit vyrovnávací paměti a mezipaměť v Linuxu

  2. Parametr _path_files a Compadd Ignore-files?

  3. Jak vypočítat využití paměti v Linuxu pomocí sar, ps a zdarma

  1. Doporučení pro meziprocesovou komunikaci

  2. Proč příkaz free a dmidecode ukazují různé hodnoty pro RAM?

  3. Jaký je v Linuxu rozdíl mezi vyrovnávacími pamětmi a mezipamětí hlášenými příkazem free?

  1. Linux – správně určit využití paměti v Linuxu?

  2. O Mem a Vmem?

  3. rkhunter:Podezřelé segmenty sdílené paměti