Non vorrei sbagliarmi, ma la deallocazione la dovrebbe gestire il marshaling .NET, esattamente come succede quando da .NET richiami una API di Windows. Non dovrebbe essere quindi necessario fare nulla per deallocare, se ne occuperà il marshaling .NET e la GC.

Per inciso, perché hai creato un progetto libreria di classi C++? In questa maniera crei una dll managed in C++/CLI (anzi, probabilmente un assembly ibrido CLI/nativo), mentre credo che quello che tu voglia sia una dll nativa...