1

如果我使用allocate_aligned在一块共享内存中分配一个对齐的内存块,那么我如何在另一个进程中识别同一个块?例如

managed_shared_memory managed_shm(open_or_create, "SharedMemory", 65536);
void *ptr = managed_shm.allocate_aligned(256, 16);

然后我如何ptr从另一个进程中找到?

对于我只是使用的非对齐分配find_or_construct,然后显然有一个与分配相关联的名称,这使得可以从另一个进程中找到分配。然而,似乎没有任何方法可以进行对齐分配,find_or_construct显然我必须错过一些关于如何识别匿名分配的基本点。

4

1 回答 1

1

下面包含的文档中的示例。这适用于指向内存返回的 allocate_aligned 方法以及 vanilla allocate 方法的指针。

//Process A obtains the offset of the address
managed_shared_memory::handle handle = 
   segment.get_handle_from_address(processA_address);

//Process A sends this address using any mechanism to process B

//Process B obtains the handle and transforms it again to an address
managed_shared_memory::handle handle = ...
void * processB_address = segment.get_address_from_handle(handle)
于 2012-11-16T18:20:06.160 回答