c – 增强内存映射文件的问题:它们转到磁盘而不是RAM
发布时间:2020-12-16 10:39:07 所属栏目:百科 来源:网络整理
导读:我试图了解Boost内存映射文件的工作原理.下面的代码可以工作,它可以完成它应该做的事情,但问题是它生成的文件存储在磁盘上(在可执行文件的同一目录中)而不是内存.也许有一个标志设置在某个地方,但我找不到它…… 在此先感谢您的任何信息! #include iostream
我试图了解Boost内存映射文件的工作原理.下面的代码可以工作,它可以完成它应该做的事情,但问题是它生成的文件存储在磁盘上(在可执行文件的同一目录中)而不是内存.也许有一个标志设置在某个地方,但我找不到它……
在此先感谢您的任何信息! #include <iostream> #include <string> #include <cstring> #include <boost/iostreams/device/mapped_file.hpp> using std::cout; using std::endl; int main(int argc,char** argv) { const int blockSize = 64; bool writer = false; if(argc > 1) { if(!strcmp(argv[1],"w")) writer = true; } boost::iostreams::mapped_file_params params; params.path = "map.dat"; // params.length = 1024; // default: all the file params.new_file_size = blockSize; if(writer) { cout << "Writer" << endl; params.mode = std::ios_base::out; } else { cout << "Reader" << endl; params.mode = std::ios_base::in; } boost::iostreams::mapped_file mf; mf.open(params); if(writer) { char *block = mf.data(); strcpy(block,"Test data block... "); cout << "Written: " << block << endl; } else { cout << "Reading: " << mf.const_data() << endl; } mf.close(); return 0; } /* Compiler options: -Wall -I$(PATH_BOOST_INCLUDE) -ggdb Linker options: -L$(PATH_BOOST_LIBS) -lboost_iostreams-mt -lboost_system-mt -lboost_filesystem-mt -DBOOST_FILESYSTEM_NO_DEPRECATED */ 编译使用:gcc 4.2.1 解决方法
内存映射将磁盘文件映射到内存中.磁盘上必须有一个文件才能实现!
编辑:从您的评论中,听起来您想使用共享内存 – 请参阅http://www.boost.org/doc/libs/1_41_0/doc/html/interprocess/quick_guide.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |