CUFFT and memory allocation

When does CUFFT allocate memory? I had always assumed that it was when the plan was created but I’ve just noticed that if I create a plan and then use up all of the video memory with other allocations then when I try to execute the plan it fails with CUFFT_EXEC_FAILED. However, if I execute the plan once before making the other allocations then it works (as do all subsequent executions). This leads me to conclude that the memory is not actually allocated until the first time the plan executed. Is this correct? Does this also mean that if the FFT is out-of-place then it doesn’t allocate any memory at all?