That's right, you cannot dereference the pointer from C. If you want to use allocated memory from both C and Go, you'll need to allocate it in C.
The pattern is useful. It just doesn't handle the most common case, which is passing a buffer or a simple output parameter into a C function.