类的C#静态变量(不安全的指针)不会更改值

时间:2019-05-30 15:11:20

标签: c# pointers variables static unsafe

主要目的-使用〜10 ^ 9命令快速解析大文本文件。 想法-使用MemoryMappedFile类将文件复制到mem并接收指向该mem字段的指针。然后,使用此指针浏览该文件。

static byte* ptrExternalAcquirePointer(ref ptrExternal)的{​​{1}}的计划设置值。但是LoadFile(string strFileNameInput)在调用ptrExternal之后没有更改其值(为了测试,我添加了其他变量和代码)?

AcquirePointer(ref ptrExternal)

除了呼叫class MyMemmoryMappedFile { private unsafe static byte* ptrExternal; private static int iptrExternal; // for test purpose public static unsafe byte* LoadFile(string strFileNameInput) { ptrExternal = (byte*)0; byte* ptrLocal = (byte*)0; // for test purpose mmf = MemoryMappedFile.CreateFromFile(strFileNameInput, FileMode.Open); AccessorViewAccessor = mmf.CreateViewAccessor(); AccessorViewAccessor.SafeMemoryMappedViewHandle.AcquirePointer(ref ptrExternal); AccessorViewAccessor.SafeMemoryMappedViewHandle.AcquirePointer(ref ptrLocal); // for test purpose ptrExternal = ptrLocal; // for test purpose iptrExternal = (int)ptrLocal; // for test purpose return ptrLocal; // for test purpose } AcquirePointer(ref ptrExternal)并没有改变ptrExternal的值之外,所有呼叫均按预期工作:ptrExternal = ptrLocal和{{ 1}}收到了“在mem中归档”的正确值。

ptrLocal并没有改变自己的值,一直一直指向存储器的某些部分,这部分与编程代码非常相似(从字节iptrExternal开始)。

为什么我的期望不能奏效?

0 个答案:

没有答案