Memory pool allocator in C without using built-in malloc() and free() functions

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ม.ค. 2025

ความคิดเห็น • 7

  • @revanthrajashekar5983
    @revanthrajashekar5983 2 ปีที่แล้ว +2

    In the function my_free , heap_small[ALLOC_CNT] and heap_large[ALLOC_CNT], both are OOB. It needs to be ALLOC_CNT - 1.

  • @ravishankar7972
    @ravishankar7972 หลายเดือนก่อน

    Upon trying this implementation I also found that it is not necessarily the array base address be 32 bytes aligned or 128 bytes. So the mod of address might not necessarily be 0.

  • @ravishankar7972
    @ravishankar7972 หลายเดือนก่อน

    Doesn’t the update to the bool array or bitmap need to be atomic?

  • @karthickNarayanan
    @karthickNarayanan ปีที่แล้ว +2

    in free function should the ptr be subtracted from base address of addr and then we should do Modulo ?

  • @galalroy
    @galalroy 2 ปีที่แล้ว

    Possible solution
    for (int i = 0; i < ALLOC_CNT; i++) {
    if (ptr == (void*)heap_small[i]) {
    used_small[i] = false;
    break;
    }
    if (ptr == (void*)heap_large[i]) {
    used_large[i] = false;
    break;
    }
    }

  • @galalroy
    @galalroy 2 ปีที่แล้ว +3

    your my_free func have critical bug if (addr % HEAP_SMALL == 0) never happen