void Heap_Init(void){ int i;
int32_t *pt;
pt = FreePt = &Heap[0];
for(i=1; i<NUM; i++){
*pt = (long)(pt+SIZE);// the first word of a free block points to another free block
pt = pt + SIZE; // value of pointer pt should increase by 4*SIZE
}
*(long*)pt = NULL; // the last free block points to NULL
}
Я пытаюсь понять эту строку:
*pt = (long)(pt+SIZE);// the first word of a free block points to another free block
Как будет работать назначение * p указателя на следующий размер pt + size?кто-нибудь представит мне это, пожалуйста?
#define SIZE 4 // number of 32-bit words in each block
#define NUM 5 // number of blocks
#define NULL 0 // definition of empty pointer
int32_t *FreePt; // points to the first free block
int32_t Heap[SIZE*NUM];
Как эта функция тоже работает?
void Heap_Release(int32_t *pt){
int32_t *oldFreePt;
oldFreePt = FreePt;
FreePt = pt; // newly freed block is first
*pt = (int32_t)oldFreePt; // newly freed block points to previous first
}