如何在c#中找到字节*的长度?
它指向非托管c ++库中的本机字节数组。我需要将它转换为c#byte [],但为了做到这一点,我需要长度。 .Length不起作用。
byte* ETC = //Stuff from unmanaged c++ DLL;
int ETCLength = ????
答案 0 :(得分:5)
你不能只知道指针的长度;指针只是开始。通常,指针和长度一起传递 。在将来,Span<T>
可能会改善这一点 - 或者可能不会!时间会证明。
你需要知道长度。这可以通过API,也可以通过文档。 可能是数据的模式,意味着结束(例如,nul
终止符,或者在前几个字节中编码的长度),但是:这种方法是大多数缓冲区的方式攻击开始。如果你在谈论指针,你应该总是知道长度。