malloc.c 657 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include <unistd.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #define N_PTRS 1000
  5. #define N_ALLOCS 10000
  6. #define MAX_SIZE 0x10000
  7. #define random_size() (random()%MAX_SIZE)
  8. #define random_ptr() (random()%N_PTRS)
  9. int main(int argc,char *argv[])
  10. {
  11. void **ptrs;
  12. int i,j;
  13. int size;
  14. srandom(0x19730929);
  15. ptrs = malloc(N_PTRS*sizeof(void *));
  16. for(i=0;i<N_PTRS;i++){
  17. ptrs[i]=malloc(random_size());
  18. }
  19. for(i=0;i<N_ALLOCS;i++){
  20. j=random_ptr();
  21. free(ptrs[j]);
  22. size=random_size();
  23. ptrs[j]=malloc(size);
  24. if(!ptrs[j]){
  25. printf("malloc failed! %d\n",i);
  26. }
  27. memset(ptrs[j],0,size);
  28. }
  29. for(i=0;i<N_PTRS;i++){
  30. free(ptrs[i]);
  31. }
  32. return 0;
  33. }