1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #include <unistd.h>
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- #define N_PTRS 1000
- #define N_ALLOCS 10000
- #define MAX_SIZE 0x10000
- #define random_size() (random()%MAX_SIZE)
- #define random_ptr() (random()%N_PTRS)
- void test1(void);
- void test2(void);
- int main(int argc,char *argv[])
- {
- test1();
- test2();
- return 0;
- }
- void test1(void)
- {
- void **ptrs;
- int i,j;
- int size;
- srandom(0x19730929);
- ptrs = malloc(N_PTRS*sizeof(void *));
- for(i=0;i<N_PTRS;i++){
- ptrs[i]=malloc(random_size());
- }
- for(i=0;i<N_ALLOCS;i++){
- j=random_ptr();
- free(ptrs[j]);
- size=random_size();
- ptrs[j]=malloc(size);
- if(!ptrs[j]){
- printf("malloc failed! %d\n",i);
- }
- memset(ptrs[j],0,size);
- }
- for(i=0;i<N_PTRS;i++){
- free(ptrs[i]);
- }
- }
- void test2(void)
- {
- void *ptr = NULL;
- ptr = realloc(ptr,100);
- if(!ptr){
- printf("couldn't realloc() a NULL pointer\n");
- }else{
- free(ptr);
- }
-
- ptr = malloc(100);
- ptr = realloc(ptr, 0);
- if(ptr){
- printf("realloc(,0) failed\n");
- free(ptr);
- }
- }
|