gpt4 book ai didi

c - 为什么在本地进程之间传递指针时会导致段错误?

转载 作者:太空宇宙 更新时间:2023-11-04 00:15:14 26 4
gpt4 key购买 nike

我正在将一组指针从服务器传递到客户端。但是在客户端,当我取消对接收到的数组的引用时,我会遇到段错误。 服务器和客户端都是操作系统本地的。我认为我在指针方面犯了某种错误并违反了一些指针规则。

代码如下:

Server.c

struct WinGoku goku,windows,gates;

struct WinGoku *array[3];
array[0] = &goku;
array[1] = &windows;
array[2] = &gates;

send(conSocket, array, sizeof(&array), 0);

客户端.c

struct WinGoku **array;

int rec = recv(mySocket, array, 4, 0);

printf("bytes Recieved %d\n", rec);

int i;
for(i = 0; i<3;i++)
{
printf("%s\n",array[i]->test);
}

struct WinGoku 仅包含 char[50],其中我使用 strcpy 复制数据。

发送和接收未返回 -1,因此数据发送和接收正常。

我做错了什么?

最佳答案

Server & client both are local to the OS. I am sure I am making some kind of mistake in pointers & voilating some pointer rule.

指针在一个叫做 "virtual memory" space 的东西中.范围仅限于单个进程。

每个服务器,客户端,尽管在同一台计算机上都有自己的虚拟内存空间。这些指针在每一个中都是无效的。你必须 serialize (并且通常编码)要通过网络发送的内存内容。

关于c - 为什么在本地进程之间传递指针时会导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19548994/

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