If I create an OpenCL buffer with the option CL_MEM_USE_HOST_PTR and then call clReleaseMemObject on the buffer after using it do I still need to call free on the memory I dynamically allocated. Also if a kernel write to the buffer will it sync with the host pointer after I call clReleaseMemObject so I can read the result?