0

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
4

0 回答 0