GNU/Linux >> Linux Esercitazione >  >> Linux

Allocazione e deallocazione della memoria attraverso i limiti delle librerie condivise

Finché rimani con Glibc o altri allocatori "normali" (jemalloc, tcmalloc, ecc.) lo stato dell'heap sarà condiviso da tutte le librerie e quindi sarai in grado di liberare memoria allocata da qualche parte con malloc ovunque tu voglia.

In teoria potrebbe essere possibile aggirare questo problema. Ad esempio, alcune librerie possono essere collegate con l'implementazione personalizzata di malloc /free (tramite l'inganno degli script di simboli di -Bsymbolic ) che ha il proprio heap privato e quindi non interagirà bene con altre parti del tuo programma. Ma non ho mai visto nulla di simile nella vita reale.

I contenitori STL sono basati su malloc /free quindi è possibile passarli/modificarli anche oltre i confini della libreria. Ovviamente diverse librerie possono essere compilate con diversi compilatori e diverse versioni incompatibili di STL (ad es. libstdc++, libcxx, ecc.) ma i loro tipi di contenitori C++ sarebbero diversi e il compilatore semplicemente non ti permetterebbe di passarli attraverso moduli incompatibili.


Linux
  1. Come eliminare i buffer di memoria e la cache in Linux

  2. Informazioni su Mem e Vmem?

  3. Come calcolare l'utilizzo della memoria in Linux usando sar, ps e free

  4. Raccomandazione sulla comunicazione tra processi

  5. Thread e descrittori di file

Usando il comando gratuito di Linux

Come controllare l'utilizzo della memoria in Linux

Comando gratuito Linux (controlla l'utilizzo della memoria)

Esempi di comandi gratuiti in Linux

gratuito:comando non trovato

In Linux, qual è la differenza tra buffer e cache segnalati dal comando free?