我们有一起使用共同记忆的C份申请。 第一项申请增加了信息,第二项总是从共享记忆中读取。
struct messagestruct {
unsigned int sessionid;
uint8_t message[16]; //unsigned 8bit int
}__attribute__ ((__packed__));
我们需要举行3次会议(供3名用户使用)。 定义的共有记忆体
#define SHARED_SIZE ( 3 * sizeof(messagestruct)) + sizeof(int)
我们获得共同记忆
int sesskey = ftok("/path/to/a/file", "B");
int shmemoryid = shmget(sesskey, SHARED_SIZE, 0666 | IPC_CREAT);
在复制用于共享记忆的建筑时,对流星报告错误(无效书写尺寸1)
void *shmaddr = shmat(shmemoryid, NULL, 0);
int *sessnum;
struct messagestruct *msgstruct;
sessnum = (int *)shmaddr;
msgstruct = (struct messagestruct*)((void*) shmaddr + sizeof(int));
memcpy(shmaddr, currentsessionsstruct, SHARED_SIZE); //-->valgrind error invalid write size 1
thanks for any helpful info.