Advertisement
CSenshi

HW3 - Malloc

May 8th, 2019
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.22 KB | None | 0 0
  1.  
  2. int test_1()
  3. {
  4.     int *data = (int *)mm_malloc(sizeof(int));
  5.     if (data == NULL)
  6.         return 0;
  7.     data[0] = 9999;
  8.     if (data[0] != 9999)
  9.         return 0;
  10.     return 1;
  11. }
  12.  
  13. int test_2()
  14. {
  15.     int *data_1 = (int *)mm_malloc(sizeof(int));
  16.     data_1[0] = 1;
  17.     int *data_2 = (int *)mm_malloc(sizeof(int));
  18.     data_2[0] = 2;
  19.     int *data_3 = (int *)mm_malloc(sizeof(int));
  20.     data_3[0] = 3;
  21.     if (data_1[0] != 1 || data_2[0] != 2 || data_3[0] != 3)
  22.         return 0;
  23.     return 1;
  24. }
  25.  
  26. int test_3()
  27. {
  28.     int *data = (int *)mm_malloc(sizeof(int) * 2);
  29.     data[0] = 123456;
  30.  
  31.     mm_free(data);
  32.  
  33.     int *new_data = (int *)mm_malloc(sizeof(int));
  34.     if (new_data != data)
  35.         return 0;
  36.  
  37.     for (int i = 0; i < 10; i++)
  38.     {
  39.         mm_free(new_data);
  40.         new_data = (int *)mm_malloc(sizeof(int));
  41.         if (new_data != data)
  42.             return 0;
  43.     }
  44.  
  45.     return 1;
  46. }
  47.  
  48. int test_4()
  49. {
  50.     int *data1 = mm_malloc(sizeof(int));
  51.     *data1 = 1;
  52.     int *data2 = mm_malloc(sizeof(int));
  53.     *data2 = 2;
  54.     int *data3 = mm_malloc(sizeof(int));
  55.     *data3 = 3;
  56.     int *data4 = mm_malloc(sizeof(int));
  57.     *data4 = 4;
  58.     int *data5 = mm_malloc(sizeof(int));
  59.     *data5 = 5;
  60.     int *data6 = mm_malloc(sizeof(int));
  61.     *data6 = 6;
  62.  
  63.     return 1;
  64. }
  65.  
  66. int test_5()
  67. {
  68.     int *data1 = mm_malloc(sizeof(int));
  69.     *data1 = 1;
  70.     mm_free(data1);
  71.     int *data2 = mm_malloc(sizeof(int));
  72.     *data2 = 2;
  73.     mm_free(data2);
  74.     int *data3 = mm_malloc(sizeof(int));
  75.     *data3 = 3;
  76.     mm_free(data3);
  77.     int *data4 = mm_malloc(sizeof(int));
  78.     *data4 = 4;
  79.     mm_free(data4);
  80.     int *data5 = mm_malloc(sizeof(int));
  81.     *data5 = 5;
  82.     mm_free(data5);
  83.     int *data6 = mm_malloc(sizeof(int));
  84.     *data6 = 6;
  85.     mm_free(data6);
  86.  
  87.     return 1;
  88. }
  89.  
  90. int test_6()
  91. {
  92.     int alloc_len = 10;
  93.     int *arr = mm_malloc(sizeof(int) * alloc_len);
  94.     for (int i = 0; i < alloc_len; i++)
  95.         arr[i] = i;
  96.  
  97.     int new_alloc_len = 2 * sizeof(int) * alloc_len;
  98.     int *new_arr = mm_realloc(arr, new_alloc_len);
  99.  
  100.     if (new_arr != arr)
  101.         return 0;
  102.  
  103.     for (int i = 0; i < alloc_len; i++)
  104.         if (new_arr[i] != i)
  105.             return 0;
  106.  
  107.     return 1;
  108. }
  109.  
  110. // Merging Free Blocks
  111. int test_7()
  112. {
  113.     int alloc_len = 10;
  114.     int *arr1 = mm_malloc(sizeof(int) * alloc_len);
  115.     int *arr2 = mm_malloc(sizeof(int) * 2 * alloc_len);
  116.     int *arr3 = mm_malloc(sizeof(int) * 4 * alloc_len);
  117.     int *arr4 = mm_malloc(sizeof(int) * 8 * alloc_len);
  118.     int *arr5 = mm_malloc(sizeof(int) * 16 * alloc_len);
  119.     int *arr6 = mm_malloc(sizeof(int) * 32 * alloc_len);
  120.     int *arr7 = mm_malloc(sizeof(int) * 64 * alloc_len);
  121.  
  122.     mm_free(arr7);
  123.     mm_free(arr3);
  124.     mm_free(arr1);
  125.     mm_free(arr6);
  126.     mm_free(arr5);
  127.     mm_free(arr4);
  128.     mm_free(arr2);
  129.     return 1;
  130. }
  131.  
  132. int test_8()
  133. {
  134.     int alloc_len = 10;
  135.     int *arr1 = mm_malloc(sizeof(int) * alloc_len);
  136.     int *arr2 = mm_malloc(sizeof(int) * alloc_len);
  137.     int *arr3 = mm_malloc(sizeof(int) * alloc_len);
  138.  
  139.     for (int i = 0; i < alloc_len; i++)
  140.         arr2[i] = 1 << i;
  141.  
  142.     mm_free(arr1);
  143.     mm_free(arr3);
  144.  
  145.     int new_alloc_len = 2 * alloc_len;
  146.     int *new_arr = mm_realloc(arr2, sizeof(int) * new_alloc_len);
  147.     for (int i = 0; i < alloc_len; i++)
  148.         printf("%d ", new_arr[i]);
  149.     return 1;
  150. }
  151.  
  152. int test_9()
  153. {
  154.     int alloc_len = 10;
  155.     int *arr1 = mm_malloc(sizeof(int) * alloc_len);
  156.     int *arr2 = mm_malloc(sizeof(int) * alloc_len);
  157.     int *arr3 = mm_malloc(sizeof(int) * alloc_len);
  158.  
  159.     for (int i = 0; i < alloc_len; i++)
  160.         arr2[i] = i;
  161.  
  162.     mm_free(arr1);
  163.     mm_free(arr3);
  164.  
  165.     int new_alloc_len = alloc_len / 2;
  166.     int *new_arr = mm_realloc(arr2, sizeof(int) * new_alloc_len);
  167.     for (int i = 0; i < alloc_len / 2; i++)
  168.         printf("%d ", new_arr[i]);
  169.     return 1;
  170. }
  171.  
  172. int test_10()
  173. {
  174.     int alloc_len = 10;
  175.     int *arr1 = mm_malloc(sizeof(int) * alloc_len);
  176.     int *arr2 = mm_malloc(sizeof(int) * 2 * alloc_len);
  177.     int *arr3 = mm_malloc(sizeof(int) * 4 * alloc_len);
  178.     int *arr4 = mm_malloc(sizeof(int) * 8 * alloc_len);
  179.     int *arr5 = mm_malloc(sizeof(int) * 16 * alloc_len);
  180.     int *arr6 = mm_malloc(sizeof(int) * 32 * alloc_len);
  181.     int *arr7 = mm_malloc(sizeof(int) * 64 * alloc_len);
  182.  
  183.     mm_free(arr7);
  184.     mm_free(arr3);
  185.     mm_free(arr1);
  186.     mm_free(arr6);
  187.     mm_free(arr5);
  188.     mm_free(arr4);
  189.     mm_free(arr2);
  190.  
  191.     arr1 = mm_malloc(sizeof(int) * alloc_len);
  192.     arr2 = mm_malloc(sizeof(int) * 2 * alloc_len);
  193.     arr3 = mm_malloc(sizeof(int) * 4 * alloc_len);
  194.     arr4 = mm_malloc(sizeof(int) * 8 * alloc_len);
  195.     arr5 = mm_malloc(sizeof(int) * 16 * alloc_len);
  196.     arr6 = mm_malloc(sizeof(int) * 32 * alloc_len);
  197.     arr7 = mm_malloc(sizeof(int) * 64 * alloc_len);
  198.     return 1;
  199. }
  200.  
  201. int test_11()
  202. {
  203.     int alloc_len = 10;
  204.     int *arr1 = mm_malloc(sizeof(int) * alloc_len);
  205.     int *arr2 = mm_malloc(sizeof(int) * alloc_len);
  206.  
  207.     mm_free(arr1);
  208.     mm_free(arr2);
  209.     return 1;
  210. }
  211.  
  212. int test_12()
  213. {
  214.     int alloc_len = 10;
  215.     int *arr1 = mm_malloc(sizeof(int) * alloc_len);
  216.     int *arr2 = mm_malloc(sizeof(int) * 2 * alloc_len);
  217.     int *arr3 = mm_malloc(sizeof(int) * 4 * alloc_len);
  218.     int *arr4 = mm_malloc(sizeof(int) * 8 * alloc_len);
  219.     int *arr5 = mm_malloc(sizeof(int) * 16 * alloc_len);
  220.     int *arr6 = mm_malloc(sizeof(int) * 32 * alloc_len);
  221.     int *arr7 = mm_malloc(sizeof(int) * 64 * alloc_len);
  222.  
  223.     // mm_free(arr1);
  224.     mm_free(arr2);
  225.     mm_free(arr3);
  226.     mm_free(arr4);
  227.     mm_free(arr5);
  228.     mm_free(arr6);
  229.     // mm_free(arr7);
  230.  
  231.     // arr1 = mm_malloc(sizeof(int) * alloc_len);
  232.     arr2 = mm_malloc(sizeof(int) * 2 * alloc_len);
  233.     arr3 = mm_malloc(sizeof(int) * 4 * alloc_len);
  234.     arr4 = mm_malloc(sizeof(int) * 8 * alloc_len);
  235.     arr5 = mm_malloc(sizeof(int) * 16 * alloc_len);
  236.     arr6 = mm_malloc(sizeof(int) * 32 * alloc_len);
  237.     // arr7 = mm_malloc(sizeof(int) * 64 * alloc_len);
  238.  
  239.     return 1;
  240. }
  241.  
  242. int test_13()
  243. {
  244.     int arr_size = 20;
  245.     int alloc_len = sizeof(int);
  246.     int *arr[arr_size];
  247.     for (int i = 0; i < arr_size; i++)
  248.         arr[i] = mm_malloc(alloc_len);
  249.  
  250.     mm_free(arr[0]);
  251.  
  252.     arr[0] = mm_malloc(alloc_len);
  253.     return 1;
  254. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement