Commit b47abd16 authored by Shivaji's avatar Shivaji

realloc changes for mm1 and mm2

parent c57e5571
...@@ -314,14 +314,10 @@ void create_new_block_and_insert_into_freelist(block_meta_data_t *meta_data_bloc ...@@ -314,14 +314,10 @@ void create_new_block_and_insert_into_freelist(block_meta_data_t *meta_data_bloc
if(meta_data_block->is_free == MM_TRUE) if(meta_data_block->is_free == MM_TRUE)
meta_data_block->is_free = MM_FALSE; meta_data_block->is_free = MM_FALSE;
if(c == 0) if(c == 0)
{
meta_data_block->next_block = free_block->next_block->next_block; meta_data_block->next_block = free_block->next_block->next_block;
}
else else
{
meta_data_block->next_block = free_block->next_block; meta_data_block->next_block = free_block->next_block;
new_block->block_size = (uint32_t)final_remain; new_block->block_size = (uint32_t)final_remain;
}
new_block->free_node = init_free_node(); new_block->free_node = init_free_node();
new_block->is_free = MM_TRUE; new_block->is_free = MM_TRUE;
mm_bind_blocks_for_allocation(meta_data_block, new_block); mm_bind_blocks_for_allocation(meta_data_block, new_block);
...@@ -621,6 +617,7 @@ void *mm_realloc(void *ptr, size_t size) ...@@ -621,6 +617,7 @@ void *mm_realloc(void *ptr, size_t size)
// printf("%d %d %d\n", meta_data_block->next_block->block_size , inter_frag , (original_size-size)); // printf("%d %d %d\n", meta_data_block->next_block->block_size , inter_frag , (original_size-size));
new_block->block_size = meta_data_block->next_block->block_size + inter_frag + (original_size - size); new_block->block_size = meta_data_block->next_block->block_size + inter_frag + (original_size - size);
// printf("%d [AFTER REALLOC]\n",new_block->block_size); // printf("%d [AFTER REALLOC]\n",new_block->block_size);
meta_data_block->next_block = meta_data_block->next_block->next_block;
new_block->is_free = MM_TRUE; new_block->is_free = MM_TRUE;
new_block->free_node= init_free_node(); new_block->free_node= init_free_node();
mm_bind_blocks_for_allocation(meta_data_block, new_block); mm_bind_blocks_for_allocation(meta_data_block, new_block);
...@@ -762,36 +759,41 @@ int main(int argc,char *argv[]) ...@@ -762,36 +759,41 @@ int main(int argc,char *argv[])
{ {
mm_init(); mm_init();
printf("[FIRST MALLOC]\n");
int *p1=mm_malloc(400); int *p1=mm_malloc(400);
printf("[SECOND MALLOC]\n");
void *p2=mm_malloc(400); void *p2=mm_malloc(400);
// int i=0; // int i=0;
// for(i =0;i<6;i++) // for(i =0;i<6;i++)
// p1[i] = i; // p1[i] = i;
printf("[THIRD MALLOC]\n");
void *p3=mm_malloc(400); void *p3=mm_malloc(400);
printf("[FOURTH MALLOC]\n");
void *p4 = mm_malloc(400); void *p4 = mm_malloc(400);
// block_meta_data_t *meta_data_block=(block_meta_data_t *)((char *)p3-sizeof(block_meta_data_t)); // block_meta_data_t *meta_data_block=(block_meta_data_t *)((char *)p3-sizeof(block_meta_data_t));
// meta_data_block=(block_meta_data_t *)((char *)p2-sizeof(block_meta_data_t)); // meta_data_block=(block_meta_data_t *)((char *)p2-sizeof(block_meta_data_t));
p1 = mm_realloc(p1,32); printf("[FIFTH MALLOC]\n");
mm_malloc(60); mm_malloc(60);
// for(int j=0;j<6;j++) // for(int j=0;j<6;j++)
// printf("%d value\n",p1[j]); // printf("%d value\n",p1[j]);
mm_free(p2);
mm_free(p4); mm_free(p4);
mm_free(p1); p1 = mm_realloc(p1,300);
mm_free(p2); mm_free(p1);
mm_free(p3); mm_free(p3);
printf("[SIXTH MALLOC]\n");
//mm_malloc(3962); mm_malloc(100);
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment