Странное поведение небезопасного. InitBlockUnaligned - PullRequest
1 голос
/ 22 апреля 2020

Итак, я пытаюсь заполнить блок памяти с помощью Unsafe.InitBlockUnaligned, к сожалению, он не работает должным образом. вместо того, чтобы заполнять блок памяти указанным мною значением, он использует совершенно другое значение. кто-нибудь может помочь, пожалуйста?

using System;
using System.Runtime.CompilerServices;

namespace Demo
{
    public class Class1
    {
        internal static unsafe void MemSet(void* dest, byte value, int byteCount)
        {
            Unsafe.InitBlockUnaligned(dest, value, (uint) byteCount);
        }

        public static unsafe void Main()
        {
            uint[] kim = new uint[10];
            kim[0] = 213;
            kim[1] = 213;
            kim[2] = 213;
            byte val = 50;

            MemSet((byte*) (uint*) Unsafe.AsPointer(ref kim[0]), val, 3 * Unsafe.SizeOf<uint>());
            Console.WriteLine(String.Join(", ", kim));
        }
    }
}
...