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

void push( void** stack, int* top, void* data, size_t size )
{
	unsigned i;
	++*top;

	stack[*top] = malloc( size );

	for( i = 0; i < size; ++i )
		( (char*)stack[*top] )[i] = ( (char*)data )[i];
	
}

int main()
{
	void* stack[10];
	int top = -1;
	int data = 10;
	char ch = 'a';

	push( stack, &top, (void*)&data, sizeof( int ) );

	push( stack, &top, (void*)&ch, sizeof( char ) );	

	printf( "%d ", *(int*)stack[0] );
	printf( "%c ", *(char*)stack[1] );

	return 0;
}