Is there a way to dynamically allocate constant memory?

I want to write a small library with some functions which use constant memory (convolutions). Thing is, I want several kernel sizes, each with it’s own constant memory size, and I don’t want to hog as much constant memory as is available by the library, leaving nothing for anyone else

Is there a way to dynamically define constant memory at run time (releasing / allocating as needed)?
Seeing as different kernels use different sizes of constant memory seems to indicate that it is possible, unless the maximum needed is allocated for the whole program at startup.

What happens if I allocate as much constant memory as possible in one module and a kernel in another module is also using constant memory?

Thanks