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_openを使用することをお勧めmmapします (それらがある場合は、システムを指定していません)。

次に、mmapセグメントを配置したいアドレス空間内のアドレスを提案できます

これはまさにあなたが求めているものではありませんが、あなたが得ることができる最も近いものだと思います

于 2010-09-08T09:45:23.940 に答える