fix: somebugs in malloc
This commit is contained in:
parent
40f99b2b4b
commit
ca01e05272
|
@ -3,5 +3,9 @@
|
|||
|
||||
int main(int argc, char const *argv[])
|
||||
{
|
||||
sf_malloc(200);
|
||||
sf_malloc(250);
|
||||
sf_malloc(300);
|
||||
sf_show_heap();
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -75,22 +75,6 @@ void *sf_malloc(sf_size_t size)
|
|||
{
|
||||
sf_block *header = &sf_free_list_heads[i];
|
||||
sf_block *ptr = header->body.links.next;
|
||||
if (i == index)
|
||||
{
|
||||
while (ptr != header)
|
||||
{
|
||||
if (get_block_size(ptr->header) >= min_size)
|
||||
{
|
||||
set_entire_header(ptr, size, get_block_size(ptr->header), 1, get_prv_alloc(ptr->header), 0, 0);
|
||||
total_block_size += get_block_size(ptr->header);
|
||||
add_payload(size);
|
||||
return ptr->body.payload;
|
||||
}
|
||||
ptr = ptr->body.links.next;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (ptr != header)
|
||||
{
|
||||
if (get_block_size(ptr->header) - min_size >= min)
|
||||
|
@ -105,8 +89,14 @@ void *sf_malloc(sf_size_t size)
|
|||
add_payload(size);
|
||||
return ptr->body.payload;
|
||||
}
|
||||
ptr = ptr->body.links.next;
|
||||
else if (get_block_size(ptr->header) >= min_size)
|
||||
{
|
||||
set_entire_header(ptr, size, get_block_size(ptr->header), 1, get_prv_alloc(ptr->header), 0, 0);
|
||||
total_block_size += get_block_size(ptr->header);
|
||||
add_payload(size);
|
||||
return ptr->body.payload;
|
||||
}
|
||||
ptr = ptr->body.links.next;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user