我char[1024]
已经在堆上分配了一个。有没有办法通过boost::interprocess
或任何其他方式共享分配的数组,而不需要先在共享内存段上分配它?换句话说,我需要一种在创建数组后从数组本身创建共享内存对象的方法。
由于一些未知的原因,这将不起作用:
char* mem = new char[1024];
shared_memory_object shm (create_only, "id", read_write);
shm.truncate(1024);
mapped_region region(shm, read_write, 0, 1024, mem);
mapped_region
构造函数抛出一个interprocess_exception e
,它没有提供有用的信息:
cout << "Error: " << e.get_error_code() << ' ' << e.get_native_error() << ' ' << e.what() << "\n";
打印:
Error: 1 0