GNU/Linux >> Tutoriels Linux >  >> Linux

Allouer et désallouer de la mémoire à travers les limites des bibliothèques partagées

Tant que vous vous en tenez à Glibc ou à d'autres allocateurs "normaux" (jemalloc, tcmalloc, etc.), l'état du tas sera partagé par toutes les bibliothèques et vous pourrez ainsi libérer de la mémoire allouée quelque part avec malloc où vous voulez.

En théorie, il est possible de contourner cela. Par exemple, certaines bibliothèques peuvent être liées à une implémentation personnalisée de malloc /free (via la supercherie des scripts de symboles de -Bsymbolic ) qui a son propre tas privé et n'interagira donc pas bien avec les autres parties de votre programme. Mais je n'ai jamais rien vu de tel dans la vraie vie.

Les conteneurs STL sont basés sur malloc /free il est donc possible de les transmettre/modifier également au-delà des limites de la bibliothèque. Bien sûr, différentes bibliothèques peuvent être compilées avec différents compilateurs et différentes versions incompatibles de STL (par exemple libstdc++, libcxx, etc.) mais leurs types de conteneurs C++ seraient différents et le compilateur ne vous permettrait tout simplement pas de les transmettre à travers des modules incompatibles.


Linux
  1. Exemples de commandes ipcs sous Linux

  2. Recommandation de communication inter-processus

  3. Pourquoi la commande free et dmidecode affichent-elles des valeurs différentes pour la RAM ?

  4. utilisation et redimensionnement de tmpfs

  5. Sous Linux, quelle est la différence entre les tampons et le cache signalés par la commande free ?

Utilisation de la commande gratuite Linux

Comment vérifier l'utilisation de la mémoire sous Linux

Commande gratuite Linux (vérifier l'utilisation de la mémoire)

Linux - Détermination correcte de l'utilisation de la mémoire sous Linux ?

exemples de commandes gratuits sous Linux

Threads et descripteurs de fichiers