Q:

can a void * be malloced? 

I have been using ODBC in C. They have a defined type:
typedef void *          SQLPOINTER;
typedef unsigned int    SQLUINTEGER;

I have a function alloc_buffer:
void db_alloc_buffer(SQLUINTEGER buffSize, SQLPOINTER *Ptr)
{
    *Ptr = malloc(buffSize);
    memset(*Ptr, ' ', buffSize); 
}

Is is safe/correct to de reference Ptr?  or can I do:
void db_alloc_buffer(SQLUINTEGER buffSize, SQLPOINTER *Ptr)
{
    Ptr = malloc(buffSize);
    memset(Ptr, ' ', buffSize); 
}

A:

No, it's not safe to dereference Ptr the way you are in the second version.  Ptr is a pointer to a pointer, not a pointer directly to the buffer.  The purpose of this function is to allocate a buffer that can be used by the caller.  The caller provides the address of their pointer variable, and your function is supposed to allocate a buffer and set that variable to the address of the buffer, and it does that by dereferencing Ptr with the result of malloc(). 
If you assign to Ptr instead of *Ptr, that just assigns to the local variable, not the caller's variable.