本文介绍了一个共享内存中的两个变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有办法使用一个共享内存,
Is there a way to use one shared memory,
shmid = shmget (shmkey, 2*sizeof(int), 0644 | IPC_CREAT);
对于具有不同值的两个变量?
For two variables with different values?
int *a, *b;
a = (int *) shmat (shmid, NULL, 0);
b = (int *) shmat (shmid, NULL, 0); // use the same block of shared memory ??
非常感谢!
推荐答案
显然(阅读手册)shmat
为您提供了一块内存,大小为 2*sizeof(int)
.
Apparently (reading the manual) shmat
gets you here a single block of memory, of size 2*sizeof(int)
.
如果是这样,那么您只需调整指针即可:
If so, then you can just adjust the pointer:
int *a, *b;
a = shmat(shmid, NULL, 0);
b = a+1;
此外,这里的转换是错误的,出于此处列出的原因(虽然问题是关于 malloc代码>,同样的参数适用)
Also, casting here is wrong, for reasons listed here (while the question is about malloc
, the same arguments apply)
这篇关于一个共享内存中的两个变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!