2

在c中你可以做

shmid = shmget(SHMEM_KEY, sizeof(int*) * n , SHEMEM_MODE | IPC_CREAT);
int* shmem = shmat(shmid, NULL, 0);

分配第一个给定的空闲内存空间作为共享内存。

有没有办法将当前内存空间分配为共享内存?

4

2 回答 2

1

您可以shmat()将您创建的共享内存别名为地址空间中的任意页面对齐范围

因此,这并没有占用您已经拥有的一些内存并发布它;它占用了一些新的共享内存,然后您复制要发布的内容,然后使用shmat将其别名到您想要发布的内容的位置 - 这具有相同的效果。

于 2010-09-08T08:14:21.943 回答
0

首先,我建议不要使用旧的shmget接口,而是使用更现代的 POSIX 接口shm_openmmap(如果你有它们,你没有指定你的系统)

然后mmap允许您在地址空间中提出您希望拥有该段的地址

这不完全是你所要求的,但我认为你能得到的最接近的

于 2010-09-08T09:45:23.940 回答