1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20: #include <errno.h>
21: #include <stdio.h>
22: #include "malloc.h"
23:
24: static int errors = 0;
25:
26: static void
27: merror (const char *msg)
28: {
29: ++errors;
30: printf ("Error: %s\n", msg);
31: }
32:
33: int
34: main (void)
35: {
36: void *p1, *p2;
37: void *save_state;
38: long i;
39:
40: errno = 0;
41:
42: p1 = malloc (10);
43: if (p1 == NULL)
44: merror ("malloc (10) failed.");
45:
46: p2 = malloc (20);
47: if (p2 == NULL)
48: merror ("malloc (20) failed.");
49:
50: free (malloc (10));
51:
52: for (i=0; i<100; ++i)
53: {
54: save_state = malloc_get_state ();
55: if (save_state == NULL)
56: {
57: merror ("malloc_get_state () failed.");
58: break;
59: }
60:
61: malloc_set_state (save_state);
62: p1 = realloc (p1, i*4 + 4);
63: if (p1 == NULL)
64: merror ("realloc (i*4) failed.");
65: free (save_state);
66: }
67:
68: p1 = realloc (p1, 40);
69: free (p2);
70: p2 = malloc (10);
71: if (p2 == NULL)
72: merror ("malloc (10) failed.");
73: free (p1);
74:
75: return errors != 0;
76: }
77:
78:
79:
80:
81:
82: