Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #define MAX 128
- void *mp[MAX][MAX];
- long min = ~0ul >> 1, max = ~0ul,avg = 0l,cnt = 0l;
- int main(void)
- {
- int i,j,k;
- union {
- long addr;
- void *ptr;
- } v;
- for (i = 0; i < MAX; ++i)
- for (j = 0; j < MAX; ++j)
- mp[i][j] = malloc(i);
- v.addr = 0;
- for (i = 0; i < MAX; ++i)
- for (j = 0; j < MAX; ++j) {
- v.ptr = mp[i][j];
- if (!v.ptr)
- continue;
- for (k = 1; !(k & v.addr); k <<= 1)
- ;
- min = k < min ? k : min;
- max = k > max ? k : max;
- avg += k;
- cnt += 1;
- free(v.ptr);
- }
- printf("malloc() alignment (min/avg/max) = %ld/%.1f/%ld\n",min,avg/1.0/cnt,max);
- printf("malloc() returned a NULL pointer = %ld times\n",MAX*MAX-cnt);
- return 0;
- }
Add Comment
Please, Sign In to add comment