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

find length of unsafe byte* pointing to native byte array c#

如何在 C# 中找到 byte* 的长度?

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

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

不能仅仅从指针知道某物的长度;指针 只是 的开始。通常,指针和长度一起传递。将来,这可能会得到 Span<T> 的改进 - 也可能不会!时间会证明一切。

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