GNU/Linux >> Tutoriales Linux >  >> Linux

Asignación y desasignación de memoria a través de límites de bibliotecas compartidas

Mientras siga con Glibc u otros asignadores "normales" (jemalloc, tcmalloc, etc.), todas las bibliotecas compartirán el estado del montón y, por lo tanto, podrá liberar memoria asignada en algún lugar con malloc donde quieras.

En teoría, puede ser posible eludir esto. Por ejemplo, alguna biblioteca puede estar vinculada con la implementación personalizada de malloc /free (a través del engaño de scripts de símbolos de -Bsymbolic ) que tiene su propio montón privado y, por lo tanto, no interactuará bien con otras partes de su programa. Pero nunca había visto algo así en la vida real.

Los contenedores STL se basan en malloc /free por lo que también es posible pasarlos/modificarlos a través de los límites de la biblioteca. Por supuesto, se pueden compilar diferentes bibliotecas con diferentes compiladores y diferentes versiones incompatibles de STL (por ejemplo, libstdc++, libcxx, etc.), pero sus tipos de contenedores C++ serían diferentes y el compilador simplemente no le permitiría pasarlos a través de módulos incompatibles.


Linux
  1. ¿Parámetro _path_files y Compadd Ignore-files?

  2. Gestión de memoria de Linux:intercambio, cachés y VM compartida

  3. Ejemplos de comandos ipcs en Linux

  4. ¿Por qué el comando free y dmidecode muestran valores diferentes para la RAM?

  5. En Linux, ¿cuál es la diferencia entre los búferes y el caché informados por el comando libre?

Usando el comando libre de Linux

Cómo verificar el uso de memoria en Linux

Comando libre de Linux (Comprobar el uso de la memoria)

Ejemplos de comandos gratuitos en Linux

Subprocesos y descriptores de archivos

uso y cambio de tamaño de tmpfs