gpt4 book ai didi

C# 不安全/固定代码

转载 作者:IT王子 更新时间:2023-10-29 04:10:38 24 4
gpt4 key购买 nike

有人可以举例说明在 C# 代码中实际使用“不安全”和“固定”的好时机吗?我以前玩过它,但从未真正找到它的好用处。

考虑这段代码...

fixed (byte* pSrc = src, pDst = dst) {
//Code that copies the bytes in a loop
}

与简单地使用...相比

Array.Copy(source, target, source.Length);

第二个是在.NET Framework 中找到的代码,第一部分代码是从Microsoft 网站复制的,http://msdn.microsoft.com/en-us/library/28k1s2k6(VS.80).aspx .

内置的 Array.Copy() 比使用不安全代码快得多。这可能只是因为第二个写得更好而第一个只是一个例子,但是在什么样的情况下你真的需要使用不安全/固定代码来做任何事情?还是这个可怜的网络开发人员在搞乱他头上的东西?

最佳答案

它对于与非托管代码的互操作很有用。任何传递给非托管函数的指针都需要固定(也称为固定)以防止垃圾收集器重新定位底层内存。

如果您正在使用 P/Invoke,则默认编码器将为您固定对象。有时需要执行自定义编码,有时需要固定对象的时间超过单个 P/Invoke 调用的持续时间。

关于C# 不安全/固定代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/85479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com