メモリマップトファイルからcスタイルのUnicode文字列を読み取ろうとして発生したので、charをcharごとにコピーして修正しましたが、より読みやすいIndexOutOfRangeException
を使用したいと思います。ReadArray
MemoryMappedFile file = MemoryMappedFile.OpenExisting("some name");
MemoryMappedViewAccessor view = file.CreateViewAccessor();
int len = (int)view.ReadUInt64(0); // Length of string + 1 is stored.
char[] buffer = new char[len];
//view.ReadArray<char>(0, buffer, sizeof(UInt64), len); // EXCEPTION
for (int i = 0; i < len; i++) // char by char, works fine.
buffer[i] = view.ReadChar(sizeof(UInt64) + sizeof(char) * i);
使い方を示す短い例を見つけようとしましたが、見つかりReadArray<>
ませんでした。