Here is speed test result for malloc, realloc and calloc at Dual Core @1.86Ghz, 1.75 GB RAM...

Code:
malloc + free:
Pass 1: 1359 ms
Pass 2: 1391 ms
Pass 3: 1359 ms
Pass 4: 1344 ms
Pass 5: 1359 ms
Pass 6: 1328 ms
Pass 7: 1344 ms
Pass 8: 1344 ms
Pass 9: 1375 ms
Pass 10: 1359 ms
Average: 1356.20 ms

realloc(NULL) + free: //similar to malloc
Pass 1: 1344 ms
Pass 2: 1406 ms
Pass 3: 1328 ms
Pass 4: 1329 ms
Pass 5: 1343 ms
Pass 6: 1344 ms
Pass 7: 1328 ms
Pass 8: 1344 ms
Pass 9: 1328 ms
Pass 10: 1328 ms
Average: 1342.20 ms

calloc + free:
Pass 1: 4734 ms
Pass 2: 4672 ms
Pass 3: 4641 ms
Pass 4: 4609 ms
Pass 5: 4641 ms
Pass 6: 4672 ms
Pass 7: 4672 ms
Pass 8: 4640 ms
Pass 9: 4625 ms
Pass 10: 4625 ms
Average: 4653.10 ms

realloc:
Pass 1: 656 ms
Pass 2: 672 ms
Pass 3: 656 ms
Pass 4: 735 ms
Pass 5: 671 ms
Pass 6: 688 ms
Pass 7: 656 ms
Pass 8: 672 ms
Pass 9: 656 ms
Pass 10: 672 ms
Average: 673.40 ms
Source-
Code:
int *test = NULL; //int sequence

DWORD start = 0;

unsigned int i, j, total = 0;

for(i=1; i<=10; i++)
{
    start = GetTickCount();

    for(j=1; j<=320000; j++)
    {
        /*
        test = calloc(j, sizeof(int));
        free(test);
        */

        /*
        test = malloc(j * sizeof(int));
        free(test);
        */

        /*
        test = realloc(NULL, j * sizeof(int)); //same as malloc
        free(test);
        */

        /*
        test = malloc(j * sizeof(int));
        free(test);
        */

        /*
        test = realloc(test, j * sizeof(int));
        */
    }

    total += (GetTickCount() - start);

    printf("Pass %d: %d ms\n", i, (unsigned int)(GetTickCount() - start));
}

//free(test); //for realloc(test, j* sizeof(int));

printf("Average: %.2f ms\n", (float)total / (float)10);

return 0;
Is there portable version of GetTickCount? I tried _ftime.millis but it show annoying result (negative numbers)...