gpt4 book ai didi

c - 从另一个进程引用内存分配指针指向的元素时出现段错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:12:56 25 4
gpt4 key购买 nike

我有一个“服务器”和一个“客户端”进程,它们通过结构共享内存“通信”。

typedef struct
{
char* buffer;
int cards;
int maxCards;
} myStruct

“服务器”和“客户端”进程都可以获取/设置这两个 int 类型的值,但是缓冲区不同(我们将其用作指向字符的指针):“服务器”分配内存,喜欢:

(*sharedMem).buffer = (char*) malloc(sizeof(char)*maxCards);

能够设置或获取值:

(*sharedMem).buffer[0] = 'a';
printf("%c\n",(*sharedMem).buffer[0]);

但是当“客户端”进程试图访问一个字符时:

printf("%c\n",(*sharedMem).buffer[0])

它因 Segmentation Fault Core Dumped 错误而崩溃。有没有不使用数组或列表就可以解决这个问题的方法?有任何想法吗?

最佳答案

两个进程都有不同的地址空间,因此一个进程中的指针在另一个进程中通常没有意义(可能 NULL 除外)。

如果您需要在进程之间交换更多数据,您可以使用

  • 管道(参见pipe() 系统调用)
  • 共享内存(参见 POSIX shm* 调用)
  • 内存映射文件(参见mmap())
  • 在结构中使用字符数组

关于c - 从另一个进程引用内存分配指针指向的元素时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34451770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com