在c中你可以做
shmid = shmget(SHMEM_KEY, sizeof(int*) * n , SHEMEM_MODE | IPC_CREAT);
int* shmem = shmat(shmid, NULL, 0);
分配第一个给定的空闲内存空间作为共享内存。
有没有办法将当前内存空间分配为共享内存?
在c中你可以做
shmid = shmget(SHMEM_KEY, sizeof(int*) * n , SHEMEM_MODE | IPC_CREAT);
int* shmem = shmat(shmid, NULL, 0);
分配第一个给定的空闲内存空间作为共享内存。
有没有办法将当前内存空间分配为共享内存?
您可以shmat()
将您创建的共享内存别名为地址空间中的任意页面对齐范围
因此,这并没有占用您已经拥有的一些内存并发布它;它占用了一些新的共享内存,然后您复制要发布的内容,然后使用shmat
将其别名到您想要发布的内容的位置 - 这具有相同的效果。
首先,我建议不要使用旧的shmget
接口,而是使用更现代的 POSIX 接口shm_open
和mmap
(如果你有它们,你没有指定你的系统)
然后mmap
允许您在地址空间中提出您希望拥有该段的地址
这不完全是你所要求的,但我认为你能得到的最接近的