Есть ли какой-нибудь возможный способ изменить расположение памяти на общую память в C?

В c вы можете сделать

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

назначить сначала предоставленную свободную область памяти в качестве разделяемой памяти.

Есть ли способ назначить текущее пространство памяти в качестве общей памяти?

2 ответа

Ты используешь shmat() псевдоним общей памяти, которую вы создали, к любому произвольному диапазону выравнивания страниц в вашем адресном пространстве

Так что это не займет у вас памяти, которая у вас уже есть, и опубликовать ее; Это занимает некоторую новую общую память, затем вы копируете то, что хотите опубликовать, а затем используете shmat псевдоним, где у вас было то, что вы хотели опубликовать - это имеет тот же эффект.

Сначала я бы посоветовал не использовать старое shmget интерфейсы, но более современные интерфейсы POSIX shm_open а также mmap (если они у вас есть, вы не указали свою систему)

Тогда mmap позволяет вам предложить адрес в вашем адресном пространстве, где вы хотели бы иметь сегмент

это не совсем то, о чем вы просите, но, думаю, самое близкое, что вы можете получить

Другие вопросы по тегам