#include <assert.h>
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>



int main(void){
	//void *mem = malloc(1024+15+sizeof(void*));
	//ASSERT(mem);
	//void *ptr = ((char*)mem+sizeof(void*)+15) & ~ (size_t)0x0F;
	//((void**)ptr)[-1] = mem;

	void *ptr;
	int num1=0;
	unsigned int *b_id[256];
	unsigned int b_mems=128;
	
	while(num1<256){
		b_id[num1]=malloc(b_mems*sizeof(unsigned int)+15+sizeof(void*));
		b_id[num1] = ((char*)b_id[num1]+15+sizeof(void*)) & ~ (size_t)0x0F;
		num1++;
	}
	free(b_id);

	return(0);
}

/*
static void memset_16aligned(void *space, char byte, size_t nbytes)
{
    assert((nbytes & 0x0F) == 0);
    assert(((uintptr_t)space & 0x0F) == 0);
}

static void test_mask(size_t align)
{
    uintptr_t mask = ~(uintptr_t)(align - 1);
    void *mem = malloc(1024+align-1);
    void *ptr = (void *)(((uintptr_t)mem+align-1) & mask);
    assert((align & (align - 1)) == 0);
    printf("0x%08" PRIXPTR ", 0x%08" PRIXPTR "\n", mem, ptr);
    memset_16aligned(ptr, 0, 1024);
    free(mem);
}

int main(void)
{
    test_mask(16);
    test_mask(32);
    test_mask(64);
    test_mask(128);
    return(0);
}
*/
