从共享内存中获取 int

问题描述 投票:0回答:1

在我当前的项目中,我必须使用 100 字节的共享内存区域,再加上紧随其后的一个整数,所以,我认为大约是 108。 但是,我似乎无法隔离这个整数。

我不太了解这是如何工作的,所以如果看起来我没有尝试,我真的很抱歉。

我所做的是,我尝试将整数的假定开始转换为整数指针,就像这样:

int *number=(int *) data[100]

数据是 shmat 之后指向共享内存的指针。

共享内存的初始化如下(不包括错误检查,以免这里增加很多行代码):

shmid=shmget(IPC_PRIVATE, 100+sizeof(int), IPC_CREAT | 0600)

有办法做到我所描述的吗?

编辑:是的,最好只上传代码:

char *data;
int shmid;
if ((shmid=shmget(IPC_PRIVATE, 100+sizeof(int), IPC_CREAT | 0600)) == -1){
            printf("Error shmget");
            exit(3);
    }
int *number = (int *)data[100];

c pointers shared-memory
1个回答
0
投票
int *number=(int *)ptr;

如果您取消引用

number
指针,您可能会调用未定义的行为。

使用

memcpy
代替。

int number;
memcpy(&number, ptr, sizeof(number));
© www.soinside.com 2019 - 2024. All rights reserved.