>>300
ダブルポインタ使ってポインタ配列を動的確保したいのかな
だとすれば、xとyを仮にint型と仮定して

unsigned char **array(int x, int y)
{
unsigned char **pa;
int i;
/*ポインタ配列を動的確保*/
pa=(unsigned char**)malloc(x*sizeof(char*));
if(!pa) /*エラー処理*/

for(i=0;i<x;i++) {
/*配列要素を動的確保*/
pa[i]=(unsigned char*)malloc(y*sizeof(char));
if(!pa[i]) /*エラー処理*/
}
return pa;
}

とかの関数を作って呼び出し側から(仮にx=4, y=10としたら)

int x=4, y=10;
unsigned char **in=arrya(x,y);

で後は、普通の配列と同様に使いまわせるはず
ただ、処理が終わったらfree()しない駄目だけど