如何改进此代码并使其安全使用?

时间:2012-08-01 20:49:29

标签: c# windows-phone-7 unsafe-pointers

我已经拿到了这段代码,但据我所知,它是不安全的代码,在WP7中可能无法使用。有没有人知道如何使这个代码安全使用,也许使用try / catch?

GCHandle gch = GCHandle.Alloc(waveInBytes,GCHandleType.Pinned);
int pPtr;

unsafe
{
    pPtr = (int)gch.AddrOfPinnedObject().ToPointer();
    pPtr += 4;
}

1 个答案:

答案 0 :(得分:1)

指针通常不安全。 IntPtr.ToPointer()返回一个void *类型,这是导致错误的原因。 try / catch没有帮助。

根据您尝试执行的操作的较大上下文,可能只需将ToPointer()调用更改为ToInt32()。实际上,在尝试将此类代码转换为WP7时,您可能会遇到更多问题而不仅仅是此编译器错误。

希望有帮助,无论如何。