Skaberen | Hans-J. Boehm, Alan J. Demers, Mark Weiser |
---|---|
Sidste version | 8.0.4 (2. marts 2019) |
Depositum | https://github.com/ivmai/bdwgc |
Skrevet i | C, C ++ |
Support sprog | C, C ++ |
Licens | MIT-licens og GNU General Public License |
Internet side | https://www.hboehm.info/gc/ |
Affaldssamleren Boehm - Demers - Weiser, ofte kaldet Boehm GC, er en affaldssamler (affaldssamler engelsk) Konservativ for C og C ++ udviklet af Hans Boehm, Alan Demers og Mark Weiser .
Boehm GC er gratis software frigivet under en tilladelig licens svarende til X11-licensen .
Driften af den beskrives som følger af Hans Boehm:
”Samleren bruger en mark-swe-algoritme. Det giver inkrementel og generationel indsamling under operativsystemer, der giver den rigtige slags support til virtuel hukommelse. (I øjeblikket inkluderer dette SunOS [45], IRIX, OSF / 1, Linux og Windows med forskellige begrænsninger.) Det gør det muligt at påberåbe sig færdiggørelseskode, når et objekt indsamles. Det kan drage fordel af typeoplysninger til at finde markører, hvis sådanne oplysninger gives, men de bruges normalt uden sådanne oplysninger. "
Boehm GC fungerer også i lækagedetekteringstilstand . I denne tilstand styres hukommelsen altid manuelt, men Boehm GC kontrollerer for bedre at identificere hukommelseslækager såvel som flere deallokationer.
Denne affaldssamler arbejder med de fleste C-programmer uden at kræve større ændringer. Udskift bare malloc () med GC_MALLOC () , realloc () med GC_REALLOC () og fjern opkaldene til gratis () . Følgende eksempel viser en brugssag.
#include <assert.h> #include <stdio.h> #include <gc.h> int main(void) { int i; const size = 10000000; GC_INIT(); for (i = 0; i < size; i++) { int **p = GC_MALLOC(sizeof *p); int *q = GC_MALLOC_ATOMIC(sizeof *q); assert(*p == 0); *p = GC_REALLOC(q, 2 * sizeof *p); if (i == size-1) printf("Heap size = %zu\n", GC_get_heap_size()); } return 0; }Mange projekter implementeret i C / C ++ bruger Boehm GC, herunder kontorapplikationer ( Inkscape ), men også nogle runtime-miljøer ( Crystal (programmeringssprog), GNU Compiler til Java , Portable.NET- projektet , Embeddable Common Lisp , min Mono implementering af Microsoft.NET )
Boehm GC understøtter også forskellige operativsystemer, herunder GNU / Linux , MacOS , BSD og Microsoft Windows