找到指向本机字节数组c#的不安全字节*的长度

时间:2017-05-15 14:47:04

标签: c# arrays native

如何在c#中找到字节*的长度?

它指向非托管c ++库中的本机字节数组。我需要将它转换为c#byte [],但为了做到这一点,我需要长度。 .Length不起作用。

byte* ETC = //Stuff from unmanaged c++ DLL;
int ETCLength = ????

1 个答案:

答案 0 :(得分:5)

不能只知道指针的长度;指针只是开始。通常,指针和长度一起传递 。在将来,Span<T>可能会改善这一点 - 或者可能不会!时间会证明。

你需要知道长度。这可以通过API,也可以通过文档。 可能是数据的模式,意味着结束(例如,nul终止符,或者在前几个字节中编码的长度),但是:这种方法是大多数缓冲区的方式攻击开始。如果你在谈论指针,你应该总是知道长度。