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