Minishell 1.0
42 School Minishell Project - A simple shell implementation
Yüklüyor...
Arıyor...
Eşleşme Yok
garbage_collector.h
Bu dosyanın dokümantasyonuna git.
1/* ************************************************************************** */
2/* */
3/* ::: :::::::: */
4/* garbage_collector.h :+: :+: :+: */
5/* +:+ +:+ +:+ */
6/* By: hgenc <hgenc@student.42kocaeli.com.tr> +#+ +:+ +#+ */
7/* +#+#+#+#+#+ +#+ */
8/* Created: 2026/03/04 16:00:00 by hgenc #+# #+# */
9/* Updated: 2026/03/04 16:00:00 by hgenc ### ########.fr */
10/* */
11/* ************************************************************************** */
12
13/**
14 * @file garbage_collector.h
15 * @brief Arena-based garbage collector header
16 *
17 * Malloc edilen tüm pointer'ları bir linked-list'te tutar.
18 * gc_free_all() çağrıldığında hepsini toplu serbest bırakır.
19 */
20
21#ifndef GARBAGE_COLLECTOR_H
22#define GARBAGE_COLLECTOR_H
23
24#include <stddef.h>
25
26/**
27 * @brief GC düğüm yapısı — tek bir allocation'ı temsil eder
28 */
29typedef struct s_gc_node {
30 void *ptr;
31 struct s_gc_node *next;
33
34/**
35 * @brief GC ana yapısı — allocation listesinin başını tutar
36 */
37typedef struct s_gc {
40
41// garbage_collector.c — Core fonksiyonlar
42void gc_init(t_gc *gc);
43void *gc_alloc(t_gc *gc, size_t size);
44void *gc_calloc(t_gc *gc, size_t nmemb, size_t size);
45void *gc_register(t_gc *gc, void *ptr);
46void gc_free_all(t_gc *gc);
47
48// garbage_collector_wrappers.c — Libft wrapper'ları
49char *gc_strdup(t_gc *gc, const char *s);
50char *gc_strjoin(t_gc *gc, const char *s1, const char *s2);
51char *gc_substr(t_gc *gc, const char *s, unsigned int start, size_t len);
52char *gc_itoa(t_gc *gc, int n);
53char **gc_split(t_gc *gc, const char *s, char c);
54
55#endif
void * gc_register(t_gc *gc, void *ptr)
Mevcut bir pointer'ı GC'ye kaydeder (dışarıda malloc edilmiş).
void * gc_alloc(t_gc *gc, size_t size)
malloc + GC'ye kayıt — free gerekmez
struct s_gc t_gc
GC ana yapısı — allocation listesinin başını tutar.
char * gc_itoa(t_gc *gc, int n)
ft_itoa + GC kayıt
void gc_init(t_gc *gc)
GC yapısını ilk duruma getirir.
void gc_free_all(t_gc *gc)
GC'deki tüm kayıtlı pointer'ları serbest bırakır.
void * gc_calloc(t_gc *gc, size_t nmemb, size_t size)
ft_calloc + GC'ye kayıt — sıfırlanmış bellek, free gerekmez
char * gc_strjoin(t_gc *gc, const char *s1, const char *s2)
ft_strjoin + GC kayıt
char * gc_substr(t_gc *gc, const char *s, unsigned int start, size_t len)
ft_substr + GC kayıt
char * gc_strdup(t_gc *gc, const char *s)
ft_strdup + GC kayıt
struct s_gc_node t_gc_node
GC düğüm yapısı — tek bir allocation'ı temsil eder.
char ** gc_split(t_gc *gc, const char *s, char c)
ft_split + GC kayıt (dizi ve tüm elemanları kaydedilir)
GC düğüm yapısı — tek bir allocation'ı temsil eder.
struct s_gc_node * next
GC ana yapısı — allocation listesinin başını tutar.
t_gc_node * head