From b445578604978ecf761880830cd64d0e138e85ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=9B=BD=E4=BC=9F?= <366193849@qq.com> Date: Wed, 19 Oct 2022 11:43:41 +0800 Subject: [PATCH] =?UTF-8?q?WriteReverse=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WindivertDotnet/WindivertBufferWriter.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/WindivertDotnet/WindivertBufferWriter.cs b/WindivertDotnet/WindivertBufferWriter.cs index b4d2ce1..16c8c74 100644 --- a/WindivertDotnet/WindivertBufferWriter.cs +++ b/WindivertDotnet/WindivertBufferWriter.cs @@ -31,12 +31,13 @@ public WindivertBufferWriter(WinDivertPacket packet, int offset) public unsafe void WriteReverse(TValue value) where TValue : unmanaged { var valueSpan = new Span(&value, sizeof(TValue)); - Span reverseSpan = stackalloc byte[valueSpan.Length]; + var span = this.GetSpan(valueSpan.Length); - valueSpan.CopyTo(reverseSpan); - reverseSpan.Reverse(); + // 先写入后翻转,减少必要的分配 + valueSpan.CopyTo(span); + span[..valueSpan.Length].Reverse(); - this.Write(reverseSpan); + this.Advance(valueSpan.Length); } ///