Is the combo cudaMalloc() and cudaFree() the best way to clean array of data?

Than cleaning it manually with a cudaMemcpy().

I would use cudaMemset if I understand your question correctly.