文件映射内存的一个问题.
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/12 18:27:38
文件映射内存的一个问题.
我想是读一个文件,用内存映射文件.映射之后能在在内存中进行读和写、不执行,然而最终并不把更改的结果写入到文件中,那几个读或写的参数怎么设置呢?
CreateFile第2个参数,CreateFileMapping第3个参数,MapViewOfFile第2个参数.
我想是读一个文件,用内存映射文件.映射之后能在在内存中进行读和写、不执行,然而最终并不把更改的结果写入到文件中,那几个读或写的参数怎么设置呢?
CreateFile第2个参数,CreateFileMapping第3个参数,MapViewOfFile第2个参数.
1)CreateFile:GENERIC_READ | GENERIC_WRITE
2)CreateFileMapping:PAGE_READWRITE
3)MapViewOfFile:FILE_MAP_READ | FILE_MAP_WRITE
有一点很奇怪,如果是读文件的话,应该只需要读标志就可以了.可是以上三个函数还是需要有写标志,否则读数据会失败.那是我多年前在写程序时,要读文件.可结果总是失败,因为程序大,一直没找到错误,最终将断点调试到了内存映射这里,发觉我认为绝不会错的内存映射居然会失败.后来将写标志也指定了,错误排除.自此之后,用内存映射时,我就一直使用读写标志.楼主可以自己试一下,我说得不一定正确.因为,之后,我也从来没有去认真测试过,是不是只指定读标志,就会读失败.
2)CreateFileMapping:PAGE_READWRITE
3)MapViewOfFile:FILE_MAP_READ | FILE_MAP_WRITE
有一点很奇怪,如果是读文件的话,应该只需要读标志就可以了.可是以上三个函数还是需要有写标志,否则读数据会失败.那是我多年前在写程序时,要读文件.可结果总是失败,因为程序大,一直没找到错误,最终将断点调试到了内存映射这里,发觉我认为绝不会错的内存映射居然会失败.后来将写标志也指定了,错误排除.自此之后,用内存映射时,我就一直使用读写标志.楼主可以自己试一下,我说得不一定正确.因为,之后,我也从来没有去认真测试过,是不是只指定读标志,就会读失败.