2010-09-08 65 views
2

在C你可以做有沒有任何可能的方法將內存位置更改爲C中的共享內存?

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

先給予免費存儲空間分配爲共享內存。

有什麼辦法可以將當前內存空間分配爲共享內存?

+0

我不這麼認爲。我認爲(但不要引用我)私有內存和共享內存之間的區別在於它的位置。所以我不認爲你可以「分配」一個共享的內存位置。但是,我可能是錯的。 – 2010-09-08 08:14:08

回答

1

您使用shmat()別名創建到您的地址空間中的任意頁對齊範圍的共享內存

所以這是不是採取一些記憶,你已經有了和發表;它採用一些新的共享內存,然後複製你想要發佈的內容,然後使用shmat將它別名到你想要發佈的地方 - 這也有相同的效果。

+0

好吧,你去了。 – 2010-09-08 08:15:07

+0

我不是很清楚,你能用實際的語法來消除歧義嗎? – Anatoli 2010-09-08 08:16:56

0

首先,我會建議不要使用老氣shmget接口,但 更現代的POSIX接口shm_openmmap(如果有的話, 你沒有指定你的系統)

然後mmap讓你在你的地址空間 提出了一個地址,你想有段

這不正是你所要求的東西,但你可以 得到最接近的,我覺得