Do I need to free hostVectors64 after curandGetDirectionVectors64(...)?

From the doc example.

CURAND_CALL(curandGetDirectionVectors64( &hostVectors64,

CURAND_CALL(curandGetScrambleConstants64( &hostScrambleConstants64));

/* Allocate memory for 3 states per thread (x, y, z), each state to get a unique dimension */
CUDA_CALL(cudaMalloc((void **)&devSobol64States,
          TOTAL_THREADS * 3 * sizeof(curandStateScrambledSobol64)));

/* Allocate memory and copy 3 sets of vectors per thread to the device */

CUDA_CALL(cudaMalloc((void **)&(devDirectionVectors64),
                     3 * TOTAL_THREADS * VECTOR_SIZE * sizeof(long long int)));

CUDA_CALL(cudaMemcpy(devDirectionVectors64, hostVectors64,
                     3 * TOTAL_THREADS * VECTOR_SIZE * sizeof(long long int),

I didn’t see the hostScrambleConstants64 was deallocated after cudaMemcpy.
When those memory will be deallocated?

And if my TOTAL_THREADS > 20,000 * 64 * dims, do I need to curandGetDirectionVectors64 more than one time, or just reuse hostVectors64?