For some reason valgrind is giving me a out of memory error... [:?]

Firstly, here's the output of my program:
Reserving 5251248 to 5251696
Alloced table at 5251168

Adding 1, 100 to 5251248
Size: 0
Adding 2, 200 to 5251248
Size: 1
table at 5251168
Items at 5251248
memory clobbered past end of allocated block

Heres the code at causes the mem leak:
Code:
		printf("table at %d\n", (int)(*table));
		printf("Items at %d\n", (int)((*table)->items));
		free(((*table)->items));
Here's where I malloc stuff (in a different func):
Code:
Table *new = malloc(sizeof(Table));
	HANDLE_OUT_OF_MEM(new);
	new->items = malloc(INIT_HEAP_SIZE * sizeof(Item));
	HANDLE_OUT_OF_MEM(new->items);
	printf("Reserving %d to %d\n", (int)(new->items), (int)(new->items + INIT_HEAP_SIZE*sizeof(Item)));
	printf("Alloced table at %d\n", (int)new);
	new->size = 0; 
	new->max = INIT_HEAP_SIZE;
	return new;
I'm assuming that i've malloced stuff correctly. Since my pointers are pointing to the right place, I don't understand how a mem leak is occuring.