Exemple #1
0
// }
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]);
  }
  
  
}