C#中 如何能够知道某个外部分配好的非托管内存ptr在我使用前是否已经被释放 ;

C#中 如何能够知道某个外部分配好的非托管内存ptr在我使用前是否已经被释放 ;

byte[] buffer = new byte[1024512];
Marshal.Copy(ptr,buffer,0,1024
512);
如果外部传进来的ptr被动态释放了,上面marshal.copy就会出错,几率很小,但是长期运行会出现。
因此想1、能够提前知道ptr是否被释放,做个保护 2、try catch不能捕获该异常 导致程序崩溃。

请给予帮助