我有两个程序。关于boost的一个难题:: interprocess :: managed_shared_memory-> size
#include <iostream>
#include <boost/interprocess/managed_shared_memory.hpp>
int main(int argc, char const* argv[])
{
boost::interprocess::shared_memory_object::remove("High");
try {
boost::interprocess::managed_shared_memory managed_shm(
boost::interprocess::create_only,
"High",
256);
std::cout << "success" << std::endl;
}
catch (boost::interprocess::interprocess_exception &ex) {
std::cout << ex.what() << std::endl;
}
return 0;
}
它打印输出 “的boost :: interprocess_exception :: library_error”
但改变256到512,它打印 “成功”:
#include <iostream>
#include <boost/interprocess/managed_shared_memory.hpp>
int main(int argc, char const* argv[])
{
boost::interprocess::shared_memory_object::remove("High");
try {
boost::interprocess::managed_shared_memory managed_shm(
boost::interprocess::create_only,
"High",
512);
std::cout << "success" << std::endl;
}
catch (boost::interprocess::interprocess_exception &ex) {
std::cout << ex.what() << std::endl;
}
return 0;
}
是什么256之间的区别512?
你能提供有关平台的更多信息/编译器/增强版本?我刚刚在Visual Studio 2010上用boost 1.55和boost 1.62运行了代码,输出结果为256和512共享内存大小的“成功”。 – pschill
@pschill可能在32位目标 – sehe
不,我尝试了32和64目标。但现在我重新尝试了其他内存大小,并在64位它的大小为256,但与255大小崩溃:) – pschill