| #include <string.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <assert.h> |
| #include "valgrind.h" |
| #include "../memcheck.h" |
| |
| struct super { int x; }; |
| static struct super superblock = { 12345 }; |
| |
| /* run with `valgrind -q --malloc-fill=0xaf --free-fill=0xdb` */ |
| int main(int argc, char **argv) |
| { |
| unsigned char *s; |
| VALGRIND_CREATE_MEMPOOL(&superblock, /*rzB=*/0, /*is_zeroed=*/0); |
| s = malloc(40); |
| assert(s); |
| assert(*s == 0xaf); |
| *s = 0x05; |
| VALGRIND_MEMPOOL_ALLOC(&superblock, s, 40); |
| printf("*s=%#hhx after MEMPOOL_ALLOC\n", *s); |
| VALGRIND_MEMPOOL_FREE(&superblock, s); |
| printf("*s=%#hhx after MEMPOOL_FREE\n", *s); |
| VALGRIND_MEMPOOL_ALLOC(&superblock, s, 40); |
| printf("*s=%#hhx after second MEMPOOL_ALLOC\n", *s); |
| free(s); |
| VALGRIND_DESTROY_MEMPOOL(&superblock); |
| |
| s = malloc(40); |
| assert(s); |
| assert(*s == 0xaf); |
| *s = 0x05; |
| VALGRIND_MALLOCLIKE_BLOCK(s, 40, 0/*rzB*/, 0/*is_zeroed*/); |
| printf("*s=%#hhx after MALLOCLIKE_BLOCK\n", *s); |
| VALGRIND_FREELIKE_BLOCK(s, 0/*rzB*/); |
| printf("*s=%#hhx after FREELIKE_BLOCK\n", *s); |
| VALGRIND_MALLOCLIKE_BLOCK(s, 40, 0/*rzB*/, 0/*is_zeroed*/); |
| printf("*s=%#hhx after second MALLOCLIKE_BLOCK\n", *s); |
| |
| return 0; |
| } |
| |