Bu proje, C dilinde basit bir malloc ve free implementasyonu sunar.
Amacım heap memory’nin teorik çalışma mantığını bildiğim halde, bunun uygulamada nasıl işlediğini öğrenmekti.
mymalloc(size_t size)→ Heap’ten yeni bir blok ayırır.myfree(void *ptr)→ Ayrılan bloğu serbest bırakır.- Bellek bloklarının önünde metadata tutulur (
size,free,next). - Basit linked list yapısı ile serbest/dolu bloklar yönetilir.
sbrkkullanılarak heap genişletilir.
-
Alignment ekle (8/16 byte hizalama)
-
Block splitting (büyük blockları parçala)
-
Doubly linked list’e geç (
prevpointer ekle) -
Coalescing iyileştir (hem prev hem next ile merge)
-
callocimplement et -
reallocimplement et -
Allocation strategy geliştir (First Fit → Best Fit)
-
Minimum block size kontrolü ekle
-
Internal fragmentation azalt
-
Stress test yaz (çok sayıda malloc/free)
-
Random allocation testleri yap
-
Memory leak kontrolü yap (Valgrind)
-
Fragmentation analizi yap
cd build
cmake ..#include "my_malloc.h"
#include <stdio.h>
int main() {
int *arr = (int *)mymalloc(10 * sizeof(int));
for (int i = 0; i < 10; i++) arr[i] = i * 2;
for (int i = 0; i < 10; i++) printf("%d ", arr[i]);
myfree(arr);
return 0;
}Çıktı:
0 2 4 6 8 10 12 14 16 18