C 共享内存如何使用阵列?

C 共享内存如何使用阵列?,c,unix,shared-memory,C,Unix,Shared Memory,到目前为止,我只是在学习共享内存。我所学的一切都让我困惑。有人能告诉我共享内存是如何处理数组的吗?还有两个子进程是如何访问所述数组的吗?共享内存区域只是虚拟内存中的一组连续字节,就像数组一样。因此,如果你有一个指向某个共享内存的指针,你可以像对待任何其他指针一样对待数组。你可以使用shmat()方法访问共享内存 shmat()syntex是 void *shmat(int shmid, const void *shmaddr, int shmflg); 这将返回一个指针 如果要将其用作数组,请

到目前为止,我只是在学习共享内存。我所学的一切都让我困惑。有人能告诉我共享内存是如何处理数组的吗?还有两个子进程是如何访问所述数组的吗?

共享内存区域只是虚拟内存中的一组连续字节,就像数组一样。因此,如果你有一个指向某个共享内存的指针,你可以像对待任何其他指针一样对待数组。

你可以使用shmat()方法访问共享内存

shmat()syntex是

void *shmat(int shmid, const void *shmaddr, int shmflg);
这将返回一个指针

如果要将其用作数组,请按如下所示进行分配

datatype array[size];
datatype* array = (datatype*)shmat(shmid, NULL, 0);

就像普通的记忆?(也就是说,一点也不,内存不会处理任何事情,它只会存储你放在内存中的东西。)如果你给出了一个你不理解的具体情况的例子,那么理解你的问题就更容易了。所以对于int-sum,它应该是:int*sum=(int*)shmat(fd,0,0);int*sum=(int*)shmat(fd,NULL,0);如何声明
array
两次?第一次将它声明为数组时,我觉得头指针无法修改。