#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <math.h>
#include <string.h>
#include <unistd.h>

int Alloc(uint32_t y, uint32_t x, void ***block){
	uint32_t num1, num2;

	(*block) = malloc(y*sizeof(void *));
	for(num1=0; num1<y; num1++){
		(*block)[num1] = malloc( x*sizeof(uint32_t) );
		printf("\t%ua: %p\n", num1, (*block)[num1] );
	}
	for(num1=0; num1<y; num1++){
		for(num2=0; num2<x; num2++){
			((uint32_t *)(*block)[num1])[num2] = num1*num2;
		}
	}

	printf("1: %p\n", (*block) );

	return 1;
}

int main(int argc, char **argv){
	void **block[2];
	uint32_t num1, num2;
	uint32_t y = 10;
	uint32_t x = 5;
	int ret = Alloc(y, x, &block[0]);

/*
	for(num1=0; num1<y; num1++){
		for(num2=0; num2<x; num2++){
			printf("%u\n", ((uint32_t *)block[num1])[num2] );
		}
	}
*/
	for(num1=0; num1<y; num1++){
		printf("\t%ub: %p\n", num1, block[0][num1] );
	}
	printf("2: %p\n", block[0] );
	for(num1=0; num1<y ; num1++){
		free(block[0][num1]);
	}
	free(block[0]);

	return 0;
}