struct shared_memory_t {
int value1;
int value2;
char* buffer;
};
shmid = shmget(key, sizeof(shared_memory_t) + segsize, 0666|IPC_CREAT);
shared_memory_t* mem = (shared_memory_t*) shmat(*shmid, NULL, 0);
所以我试图将共享内存映射到自定义结构。现在我不知道 segsize 有多大,直到用户启动程序并输入一个值。我希望缓冲区是指向 int 值之后的内存空间开头的指针。现在,如果我这样做,我会遇到内存故障。我可以附加它并通过以下方式获取起始内存空间:
void* mem = shmat(shmid, NULL, 0);
关于如何使其处于可以执行 mem->value1 并访问数据缓冲区以获取原始数据字节的状态的任何提示?