#include #include int wgrib2(int argc, char **argv); #define NMAX 1000000 int main() { int w_argc, ierr, i; char *w_argv[20]; char string1[32]; char string2[32]; char string3[32]; float grid[NMAX]; int n; sprintf(string1,"%lu", &(grid[0])); sprintf(string2,"%lu", &n); sprintf(string3,"%lu", NMAX); printf(" -grid2mdm %s %s %s\n", string1, string2, string3); w_argc=8; w_argv[0] = "my program"; w_argv[1] = "ds.td.bin"; w_argv[2] = "-d"; w_argv[3] = "2"; w_argv[4] = "-grid2mem"; w_argv[5] = string1; w_argv[6] = string2; w_argv[7] = string3; // no mem leak for (i = 0; i < 100000000; i++) { ierr=wgrib2(w_argc, w_argv); printf("----------end of call(%d) err=%d n=%d---------grid(200001):%f (%d)\n",i,ierr, n, grid[200000],i); // } w_argc=9; w_argv[0] = "my program"; w_argv[1] = "ds.td.bin"; w_argv[2] = "-i_file"; w_argv[3] = "ds.td.inv"; w_argv[4] = "-grid2mem"; w_argv[5] = string1; w_argv[6] = string2; w_argv[7] = string3; w_argv[8] = "-end"; // no mem leak for (i = 0; i < 100000000; i++) { ierr=wgrib2(w_argc, w_argv); printf("----------end of call(%d) err=%d n=%d---------grid(200001):%f (%d)\n",i,ierr, n, grid[200000],i); // } w_argc=8; w_argv[0] = "my program"; w_argv[1] = "ds.td.bin"; w_argv[2] = "-i_file"; w_argv[3] = "ds.td.inv"; w_argv[4] = "-if"; w_argv[5] = "90 hour fcst"; w_argv[6] = "-s"; w_argv[7] = "-fi"; //no mem leak for (i = 0; i < 100000000; i++) { ierr=wgrib2(w_argc, w_argv); printf("--------------end of call(%d) err=%d n=%d---------grid(200001):%f \n",i,ierr, n, grid[200000],i); // } w_argc=10; w_argv[0] = "my program"; w_argv[1] = "ds.td.bin"; w_argv[2] = "-i_file"; w_argv[3] = "ds.td.inv"; w_argv[4] = "-match"; w_argv[5] = "90 hour fcst"; w_argv[6] = "-grid2mem"; w_argv[7] = string1; w_argv[8] = string2; w_argv[9] = string3; for (i = 0; i < 100000000; i++) { ierr=wgrib2(w_argc, w_argv); printf("--------------end of call(%d) err=%d n=%d---------grid(200001):%f \n",i,ierr, n, grid[200000],i); } w_argc=8; w_argv[0] = "my program"; w_argv[1] = "ds.td.bin"; w_argv[2] = "-i_file"; w_argv[3] = "ds.td.inv"; w_argv[4] = "-match"; w_argv[5] = "90 hour fcst"; w_argv[6] = "-persistent_file"; w_argv[7] = "ds.td.inv"; // for (i = 0; i < 100000000; i++) { ierr=wgrib2(w_argc, w_argv); printf("--------------end of call(%d) err=%d n=%d---------grid(200001):%f \n",i,ierr, n, grid[200000],i); // } w_argc=10; w_argv[0] = "my program"; w_argv[1] = "ds.td.bin"; w_argv[2] = "-i_file"; w_argv[3] = "ds.td.inv"; w_argv[4] = "-match"; w_argv[5] = "90 hour fcst"; w_argv[6] = "-persistent_file"; w_argv[7] = "ds.td.inv"; w_argv[8] = "-persistent_file"; w_argv[9] = "ds.td.inv"; for (i = 0; i < 100000000; i++) { ierr=wgrib2(w_argc, w_argv); printf("--------------end of call(%d) err=%d n=%d---------grid(200001):%f \n",i,ierr, n, grid[200000],i); } exit(88); w_argv[8] = "-rewind_file"; w_argv[9] = "ds.td.inv"; w_argv[10] = "-grid2mem"; w_argv[11] = string1; w_argv[12] = string2; w_argv[13] = string3; w_argv[4] = "-d"; w_argv[5] = "2"; ierr=wgrib2(w_argc, w_argv); printf("--------------end of call(%d) err=%d n=%d---------grid(200001):%f \n",i,ierr, n, grid[200000]); for (i = 0; i < 100000000; i++) { ierr=wgrib2(w_argc, w_argv); printf("----------end of call(%d) err=%d n=%d---------grid(200001):%f (%d)\n",i,ierr, n, grid[200000],i); } return 0; }