【发布时间】:2013-10-23 17:56:50
【问题描述】:
我正在将一组指针从服务器传递到客户端。但是,在客户端,当我取消引用接收到的数组时,会出现分段错误。 服务器和客户端都是操作系统本地的。我认为我在指针方面犯了某种错误并违反了某些指针规则。
代码如下:
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);
Client.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,因此数据可以正确发送和接收。
我做错了什么?
【问题讨论】:
-
我在大量构建数组时会出现段错误,这通常是因为意外超出范围,所以我的第一站是检查以确保我从不询问实际不存在的信息。您应该为此查看所有代码,因为它有时会出现在奇怪的地方。
-
@JonahNelson 除了在这种情况下,问题出在哪里是完全显而易见的。
标签: c pointers network-programming segmentation-fault