念のため確認させて欲しいのですが

void MyMemoryAlloc(void **vpp, size_t n)
{
 .
 . 詳細は省略
 .

 *vpp = malloc(n * sizeof(T)); //確保したメモリへのポインタ

}

T *p;
void *vp = p;
MyMemoryAlloc(&vp, 10);
p = vp;

というのはOKですよね?というかよくありますよね?