// } void my_test() { char heap[100]; //printf("%s\n", heap); hl_init(heap, 100 * sizeof(char)); char* ptr = (char *) hl_alloc(heap, 13 * sizeof(char)); ptr[0] = 'h'; ptr[1] = 'e'; ptr[2] = 'l'; ptr[3] = 'l'; ptr[4] = 'o'; ptr[5] = ' '; ptr[6] = 'w'; ptr[7] = 'o'; ptr[8] = 'r'; ptr[9] = 'l'; ptr[10] = 'd'; ptr[11] = '!'; ptr[12] = '\0'; printf("%s\n", ptr); //printf("%s\n", ptr->); char* ptr2 = (char *) hl_resize(heap, ptr, 13 * sizeof(char)); printf("%s\n", ptr2); char* ptr3 = (char *) hl_resize(heap, ptr, 16 * sizeof(char)); printf("%s\n", ptr3); }
/* This is just an example task. Replace it with your code. * NOTE: your code will test others' library code. If YOUR test segfaults, * that will be bad for YOU. So program defensively. * * Provide a short description of your task here: * */ void standalone_speedtask(void *heap) { int i; void *ptrs[ITERS_LARGE]; void *ptrs_two[ITERS_LARGE]; void *ptrs_three[ITERS_LARGE]; if (!hl_init(heap, HEAP_SIZE)) return; for (i = 0; i < ITERS_LARGE; i++) { ptrs[i] = hl_alloc(heap, REQ_SIZE1); } for (i = 0; i < ITERS_LARGE; i++) { if (ptrs[i]) ptrs[i] = hl_resize(heap, ptrs[i], REQ_SIZE2); } for (i = 1; i < ITERS_LARGE; i+=2) { if (ptrs[i]) hl_release(heap, ptrs[i]); } //Create another heap right after this first one and run the same tests if (!hl_init((char*)heap + HEAP_SIZE, HEAP_SIZE)) return; for (i = 0; i < ITERS_SMALL; i++) { ptrs_two[i] = hl_alloc(heap, REQ_SIZE1); } for (i = 0; i < ITERS_SMALL; i++) { if (ptrs_two[i]) ptrs_two[i] = hl_resize(heap, ptrs_two[i], REQ_SIZE2); } for (i = 1; i < ITERS_SMALL; i+=2) { if (ptrs_two[i]) hl_release(heap, ptrs_two[i]); } //Once again, but with medium size if (!hl_init((char*)heap + HEAP_SIZE, HEAP_SIZE)) return; for (i = 0; i < ITERS_MEDIUM; i++) { ptrs_three[i] = hl_alloc(heap, REQ_SIZE1); } for (i = 0; i < ITERS_MEDIUM; i++) { if (ptrs_three[i]) ptrs_three[i] = hl_resize(heap, ptrs_three[i], REQ_SIZE2); } for (i = 1; i < ITERS_MEDIUM; i+=2) { if (ptrs_three[i]) hl_release(heap, ptrs_three[i]); } }