home *** CD-ROM | disk | FTP | other *** search
/ RISC DISC 1 / RISC_DISC_1.iso / pd_share / code / unixlib / !UnixLib / test / c / malloctest < prev    next >
Encoding:
Text File  |  1994-03-08  |  2.5 KB  |  195 lines

  1. /* test suite for malloc(3),realloc(3), and free(3) */
  2.  
  3. /* (c) Copyright 1990 H.Rogers */
  4.  
  5. #include <stdio.h>
  6. #include <string.h>
  7. #ifdef __STDC__
  8. #include <stdlib.h>
  9. #else
  10. extern void srand ();
  11. extern int rand ();
  12. extern void *malloc ();
  13. extern void *realloc ();
  14. extern void free ();
  15. #endif
  16. #include <time.h>
  17.  
  18. #ifndef ARCH
  19. #ifdef __STDC__
  20. extern void __initalloc (void);
  21. #else
  22. extern void __initalloc ();
  23. #endif
  24. #endif
  25.  
  26. #define NBLK 512
  27. #define BLKSIZ 2048
  28.  
  29. #ifdef M_DEBUG
  30. #ifdef __STDC__
  31. extern void __m_debug (void);
  32. #else
  33. extern void __m_debug ();
  34. #endif
  35. #else
  36. #ifdef __STDC__
  37. static void
  38. __m_debug (void)
  39. {
  40. }
  41. #else
  42. static void
  43. __m_debug ()
  44. {
  45. }
  46. #endif
  47. #endif
  48.  
  49. #ifdef __STDC__
  50. static void *
  51. alloc (register size_t z)
  52. #else
  53. static void *
  54. alloc (z)
  55.      register size_t z;
  56. #endif
  57. {
  58.   register void *r;
  59.  
  60.   r = malloc (z);
  61.   if (r)
  62.     memset (r, 0xff, z);
  63.  
  64.   return (r);
  65. }
  66.  
  67. #ifdef __STDC__
  68. static void *
  69. ralloc (register void *r, register size_t z)
  70. #else
  71. static void *
  72. ralloc (r, z)
  73.      register void *r;
  74.      register size_t z;
  75. #endif
  76. {
  77.   r = realloc (r, z);
  78.   if (r)
  79.     memset (r, 0xff, z);
  80.  
  81.   return (r);
  82. }
  83.  
  84. int
  85. main (int argc, char **argv)
  86. {
  87.   void *m[NBLK];
  88.   int i, j;
  89.   void *k;
  90.  
  91. #ifndef ARCH
  92.   __initalloc ();
  93. #endif
  94.  
  95.   if (argc < 2)
  96.     srand (0);
  97.   else
  98.     srand (atoi (argv[1]));
  99.  
  100.   printf ("stage: 1\n");
  101.  
  102.   for (i = 0; i < NBLK; i++)
  103.     m[i] = alloc (rand () & (BLKSIZ - 1));
  104.  
  105.   __m_debug ();
  106.  
  107.   printf ("stage: 2\n");
  108.  
  109.   for (i = 0; i < NBLK; i++)
  110.     if (m[i])
  111.       {
  112.     j = rand () & (BLKSIZ - 1);
  113.     k = ralloc (m[i], j);
  114.     if (!k)
  115.       free (m[i]);
  116.     m[i] = k;
  117.       }
  118.  
  119.   __m_debug ();
  120.  
  121.   printf ("stage: 3\n");
  122.  
  123.   for (i = 0; i < (NBLK >> 2); i++)
  124.     {
  125.       j = rand () & (NBLK - 1);
  126.       if (m[j])
  127.     {
  128.       free (m[j]);
  129.       m[j] = 0;
  130.     }
  131.     }
  132.  
  133.   __m_debug ();
  134.  
  135.   printf ("stage: 4\n");
  136.  
  137.   for (i = 0; i < NBLK; i++)
  138.     if (m[i])
  139.       {
  140.     j = rand () & (BLKSIZ - 1);
  141.     k = ralloc (m[i], j);
  142.     if (!k)
  143.       free (m[i]);
  144.     m[i] = k;
  145.       }
  146.  
  147.   __m_debug ();
  148.  
  149.   printf ("stage: 5\n");
  150.  
  151.   for (i = 0; i < (NBLK >> 2); i++)
  152.     {
  153.       j = rand () & (NBLK - 1);
  154.       if (m[j])
  155.     {
  156.       free (m[j]);
  157.       m[j] = 0;
  158.     }
  159.     }
  160.  
  161.   __m_debug ();
  162.  
  163.   printf ("stage: 6\n");
  164.  
  165.   for (i = 0; i < NBLK; i++)
  166.     if (!m[i])
  167.       m[i] = alloc (rand () & (BLKSIZ - 1));
  168.  
  169.   __m_debug ();
  170.  
  171.   printf ("stage: 7\n");
  172.  
  173.   for (i = 0; i < NBLK; i++)
  174.     if (m[i])
  175.       {
  176.     j = rand () & (BLKSIZ - 1);
  177.     k = ralloc (m[i], j);
  178.     if (!k)
  179.       free (m[i]);
  180.     m[i] = k;
  181.       }
  182.  
  183.   __m_debug ();
  184.  
  185.   printf ("stage: 8\n");
  186.  
  187.   for (i = 0; i < NBLK; i++)
  188.     if (m[i])
  189.       free (m[i]);
  190.  
  191.   __m_debug ();
  192.  
  193.   return (0);
  194. }
  195.