void *** arg;
int i;

arg = (void***)malloc(sizeof(void***)*3);

for(i=0;i<3;i++)
arg[i] = (void**)malloc(sizeof(void**)*3);
arg[0][0] = ptr;

これでOKだよな?実際に動かしてないのでこれでOKと言い切れないヘタレですまん