我对Visual Studio 2008中的.NET平台构建选项有一些困惑.
什么是"任何CPU"编译目标,它生成什么类型的文件?我检查了这个"Any CPU"构建的输出可执行文件,发现它们是x86可执行文件(谁也看不到它!).那么,将可执行文件定位到x86与"任何CPU"之间有什么区别吗?
我注意到的另一件事是托管C++项目没有这个平台作为选项.这是为什么?这是否意味着我怀疑"任何CPU"可执行文件是普通的32位可执行文件是对的?
我与大合作,和不断增长的使用内存映射文件的托管的包装文件:MemoryMappedFile,MemoryMappedViewAccessor。
我使用以下代码创建空文件:
long length = 1024L * 1024L * 1L; // 1MB
// create blank file of desired size (nice and quick!)
FileStream fs = new FileStream(filename, FileMode.CreateNew);
fs.Seek(length, SeekOrigin.Begin);
fs.WriteByte(0);
fs.Close();
// open MMF and view accessor for whole file
this._mmf = MemoryMappedFile.CreateFromFile(filename, FileMode.Open);
this._view = this._mmf.CreateViewAccessor(0, 0, MemoryMappedFileAccess.ReadWrite);
Run Code Online (Sandbox Code Playgroud)
可以正常工作,最大1GB。当我尝试2GB时,我得到了IOException:
Not enough storage is available to process this command.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.MemoryMappedFiles.MemoryMappedView.CreateView(SafeMemoryMappedFileHandle memMappedFileHandle, MemoryMappedFileAccess access, Int64 offset, Int64 size) …Run Code Online (Sandbox Code Playgroud)