memory assigned by UC++ then handed to .NET process can not be freed by .NETPretty sure that can be solved by implementing IDisposable and having Dispose call back into C++ to free resources. Probably if you add a managed C++ layer in between this is sort of built-in.
Oh and like skc says: the validation you're after does work as well, though I admit it takes some time to figure out exactly how to do it.