Global memory allocation policy


I am interested to know what memory allocation policy cudaMalloc uses (e.g. best fit, worst fit, first fit,…). In other words, if I have a bunch of cudaMalloc calls, followed by a bunch of cudaFree calls, and then a cudaMalloc, how does CUDA choose the block of available memory it returns?

Thank you.