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
セグメントを配置したいアドレス空間内のアドレスを提案できます
これはまさにあなたが求めているものではありませんが、あなたが得ることができる最も近いものだと思います