有没有办法在C中将内存位置更改为共享内存?

时间:2010-09-08 08:09:30

标签: c posix shared-memory sysv

在c中你可以做到

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

将第一个给定的可用内存空间分配为共享内存。

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

2 个答案:

答案 0 :(得分:1)

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

所以这不是你已经拥有的一些记忆并发布它;它会获取一些新的共享内存,然后复制您想要发布的内容,然后使用shmat将其替换为您想要发布的内容 - 这具有相同的效果。

答案 1 :(得分:0)

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

然后mmap允许您在地址空间中提出地址 您希望在哪里获得细分

这不是你要求的,但你最接近 得到,我想