Minishell 1.0
42 School Minishell Project - A simple shell implementation
Yüklüyor...
Arıyor...
Eşleşme Yok
garbage_collector.c Dosya Referansı

Arena-based garbage collector — core fonksiyonlar. Ayrıntılar...

#include "../../include/garbage_collector.h"
#include "../../libft/libft.h"
#include <stdlib.h>
garbage_collector.c için içerme bağımlılık grafiği:

Bu dosyanın kaynak koduna git.

Fonksiyonlar

void gc_init (t_gc *gc)
 GC yapısını ilk duruma getirir.
static t_gc_nodegc_add_node (t_gc *gc, void *ptr)
 Yeni bir gc_node oluşturup ptr'yi kaydeder.
void * gc_alloc (t_gc *gc, size_t size)
 malloc + GC'ye kayıt — free gerekmez
void * gc_calloc (t_gc *gc, size_t nmemb, size_t size)
 ft_calloc + GC'ye kayıt — sıfırlanmış bellek, free gerekmez
void * gc_register (t_gc *gc, void *ptr)
 Mevcut bir pointer'ı GC'ye kaydeder (dışarıda malloc edilmiş).
void gc_free_all (t_gc *gc)
 GC'deki tüm kayıtlı pointer'ları serbest bırakır.

Ayrıntılı tanımlama

Arena-based garbage collector — core fonksiyonlar.

Linked-list tabanlı basit bir GC. Her allocation gc_node olarak listeye eklenir, gc_free_all ile hepsi toplu serbest bırakılır.

garbage_collector.c dosyasında tanımlanmıştır.

Fonksiyon Dokümantasyonu

◆ gc_init()

void gc_init ( t_gc * gc)

GC yapısını ilk duruma getirir.

Parametreler
gcGC yapısı pointer'ı

garbage_collector.c dosyasının 30 numaralı satırında tanımlanmıştır.

Referanslar s_gc::head.

◆ gc_add_node()

t_gc_node * gc_add_node ( t_gc * gc,
void * ptr )
static

Yeni bir gc_node oluşturup ptr'yi kaydeder.

Parametreler
gcGC yapısı pointer'ı
ptrKaydedilecek pointer
Döndürdüğü değer
Kaydedilen pointer, başarısızsa NULL

garbage_collector.c dosyasının 41 numaralı satırında tanımlanmıştır.

Referanslar s_gc::head, s_gc_node::next ve s_gc_node::ptr.

Referans veren gc_alloc(), gc_calloc() ve gc_register().

Bu fonksiyon için çağırılma şeması:

◆ gc_alloc()

void * gc_alloc ( t_gc * gc,
size_t size )

malloc + GC'ye kayıt — free gerekmez

Parametreler
gcGC yapısı pointer'ı
sizeAyrılacak byte sayısı
Döndürdüğü değer
malloc'lanmış ve GC'ye kaydedilmiş pointer, başarısızsa NULL

garbage_collector.c dosyasının 65 numaralı satırında tanımlanmıştır.

Referanslar gc_add_node().

Bu fonksiyon için çağırılma şeması:

◆ gc_calloc()

void * gc_calloc ( t_gc * gc,
size_t nmemb,
size_t size )

ft_calloc + GC'ye kayıt — sıfırlanmış bellek, free gerekmez

Parametreler
gcGC yapısı pointer'ı
nmembEleman sayısı
sizeHer elemanın byte boyutu
Döndürdüğü değer
calloc'lanmış ve GC'ye kaydedilmiş pointer, başarısızsa NULL
Not
Örn: gc_calloc(&shell->gc, 100, sizeof(char)) → 100 char'lık buffer

garbage_collector.c dosyasının 86 numaralı satırında tanımlanmıştır.

Referanslar gc_add_node().

Bu fonksiyon için çağırılma şeması:

◆ gc_register()

void * gc_register ( t_gc * gc,
void * ptr )

Mevcut bir pointer'ı GC'ye kaydeder (dışarıda malloc edilmiş).

Parametreler
gcGC yapısı pointer'ı
ptrKaydedilecek pointer
Döndürdüğü değer
Kaydedilen pointer, başarısızsa NULL (ptr de free'lenir)

garbage_collector.c dosyasının 104 numaralı satırında tanımlanmıştır.

Referanslar gc_add_node().

Referans veren gc_itoa(), gc_split(), gc_strdup(), gc_strjoin() ve gc_substr().

Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ gc_free_all()

void gc_free_all ( t_gc * gc)

GC'deki tüm kayıtlı pointer'ları serbest bırakır.

Parametreler
gcGC yapısı pointer'ı

Tüm node'ları ve içlerindeki ptr'leri free'ler. Çağrıdan sonra gc tekrar kullanılabilir (head = NULL).

garbage_collector.c dosyasının 120 numaralı satırında tanımlanmıştır.

Referanslar s_gc::head, s_gc_node::next ve s_gc_node::ptr.