Allora allego questo test, per completezza, anche se non è servito a molto. Ha comunque evidenziato che xalloc e Heapxxx gestiscono la memoria in modi differenti.

codice:
#include <windows.h>
#include <stdio.h>

#define THE_BIG_ONE 10000
#define MEMORY_MANAGER 1


typedef struct 
{
	double x,y;

} paramStruct;

typedef struct 
{
	double x,y;
	paramStruct p;

} myStruct;




int main (void)
{
	HANDLE hHeap;
	SIZE_T size;
	myStruct * arr[THE_BIG_ONE];
	paramStruct p[THE_BIG_ONE];
	int i;

	hHeap = GetProcessHeap();

	
	for (;;)
	{
		for (i=0; i<THE_BIG_ONE; i++) 
		{
			if (MEMORY_MANAGER) arr[i] = (myStruct*)calloc(1,sizeof(myStruct));
			else arr[i] = (myStruct*)HeapAlloc(hHeap,0x08,sizeof(myStruct));

			arr[i]->p = p[i];
		}

		for (i=0; i<THE_BIG_ONE; i++) 
		{
			arr[i]->x = (double)time(0);
			arr[i]->y = (double)time(0);
			printf("%f %f\n",arr[i]->x,arr[i]->y);
		}

		for (i=0; i<THE_BIG_ONE; i++) 
		{
			if (MEMORY_MANAGER) free(arr[i]);
			else HeapFree(hHeap,HEAP_NO_SERIALIZE,arr[i]);
			
		}

		printf("Mem released\n");
		//system("pause");
	}

	

	
}
Cambiando il valore di MEMORY_MANAGER l'unica indicazione che ottengo è che allocare con xalloc riserva piu memoria di quella riservata con le Heapxxx. Però al momento del rilascio, la memoria viene restituita al sistema operativo (si vede da task manager).