1 #include <string.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <assert.h>
5 #include "valgrind.h"
6 #include "../memcheck.h"
7
8 struct super { int x; };
9 static struct super superblock = { 12345 };
10
11 /* run with `valgrind -q --malloc-fill=0xaf --free-fill=0xdb` */
main(int argc,char ** argv)12 int main(int argc, char **argv)
13 {
14 unsigned char *s;
15 VALGRIND_CREATE_MEMPOOL(&superblock, /*rzB=*/0, /*is_zeroed=*/0);
16 s = malloc(40);
17 assert(s);
18 assert(*s == 0xaf);
19 *s = 0x05;
20 VALGRIND_MEMPOOL_ALLOC(&superblock, s, 40);
21 printf("*s=%#hhx after MEMPOOL_ALLOC\n", *s);
22 VALGRIND_MEMPOOL_FREE(&superblock, s);
23 printf("*s=%#hhx after MEMPOOL_FREE\n", *s);
24 VALGRIND_MEMPOOL_ALLOC(&superblock, s, 40);
25 printf("*s=%#hhx after second MEMPOOL_ALLOC\n", *s);
26 free(s);
27 VALGRIND_DESTROY_MEMPOOL(&superblock);
28
29 s = malloc(40);
30 assert(s);
31 assert(*s == 0xaf);
32 *s = 0x05;
33 VALGRIND_MALLOCLIKE_BLOCK(s, 40, 0/*rzB*/, 0/*is_zeroed*/);
34 printf("*s=%#hhx after MALLOCLIKE_BLOCK\n", *s);
35 VALGRIND_FREELIKE_BLOCK(s, 0/*rzB*/);
36 printf("*s=%#hhx after FREELIKE_BLOCK\n", *s);
37 VALGRIND_MALLOCLIKE_BLOCK(s, 40, 0/*rzB*/, 0/*is_zeroed*/);
38 printf("*s=%#hhx after second MALLOCLIKE_BLOCK\n", *s);
39
40 return 0;
41 }
42
43