]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/valgrind/src/valgrind-3.6.0-svn/drd/tests/memory_allocation.c
update
[l4.git] / l4 / pkg / valgrind / src / valgrind-3.6.0-svn / drd / tests / memory_allocation.c
1 /**
2  * @brief Repeatedly allocate and free memory. Tests whether drd really frees
3  *        memory allocated by a client. See also
4  *        http://bugs.kde.org/show_bug.cgi?id=161036.
5  */
6
7 #include <assert.h>
8 #include <stdlib.h>
9
10 int main()
11 {
12   int i;
13   void* p;
14
15   for (i = 0; i < 100000; i++)
16     free(malloc(40960));
17
18   for (i = 0; i < 100000; i++)
19   {
20     p = realloc(NULL, 40960);
21     p = realloc(p, 50000);
22     p = realloc(p, 40000);
23     p = realloc(p, 0);
24     /*
25      * glibc returns a NULL pointer when the size argument passed to realloc()
26      * is zero, while Darwin's C library returns a non-NULL pointer. Both are
27      * allowed by POSIX.
28      */
29 #if defined(VGO_darwin)
30     if (p)
31       free(p);
32 #else
33     assert(! p);
34 #endif
35   }
36
37   return 0;
38 }