有没有办法使用一个共享内存,
shmid = shmget (shmkey, 2*sizeof(int), 0644 | IPC_CREAT);
对于两个具有不同值的变量?
int *a, *b;
a = (int *) shmat (shmid, NULL, 0);
b = (int *) shmat (shmid, NULL, 0); // use the same block of shared memory ??
非常感谢!
答案 0 :(得分:0)
显然(阅读手册)shmat
会在这里找到一块大小为2*sizeof(int)
的单块内存。
如果是这样,那么你可以调整指针:
int *a, *b;
a = shmat(shmid, NULL, 0);
b = a+1;
此外,在这里投射是错误的,for reasons listed here(问题是关于malloc
,同样的论点适用)
答案 1 :(得分:0)
我不熟悉shmget
和类似的东西,但我想如果内存是连续的,只需增加指针。
int *a, *b;
i = (int *) shmat (shmid, NULL, 0);
a = ((int *) shmat (shmid, NULL, 0)) + 1;
更好的是,只需写下:
int *myMemory = shmat (shmid, NULL, 0);
myMemory[0] = 5;
myMemory[1] = 10;