C ++访问结构变量导致分段错误

C++ accessing struct variable causes segmentation fault

我有这部分代码:

int connectingSocket,port;
struct sockaddr_in server_address;
struct hostent *server;
server = gethostbyname("localhost");
if(server = NULL)
    dataFile << "Error finding a host!" << std::endl;
port = 7017;
connectingSocket = socket(AF_INET,SOCK_STREAM,0);
if(connectingSocket < 0)
    dataFile << "Error opening a socket" << std::endl;
memset(&server_address,0,sizeof(server_address));
server_address.sin_family = AF_INET;
server_address.sin_port = htons(port);
memcpy(&(server_address.sin_addr.s_addr), server->h_addr_list,server->h_length);

我确定最后一行抛出 Segmentation fault(Core dumped) 错误,但我不确定问题是什么 is.I 尝试打印出变量的大小。

std::cout << sizeof(server_address.sin_addr.s_addr) << " - " << sizeof(server->h_addr_list) << std::endl;

这一行打印的是“4 - 8”,如果我要复制,结果不应该一样吗?

另外:

std::cout << server->h_length << std::endl;

仅此行会导致分段 fault.So 我相信访问此变量会导致 problem.I 需要您的帮助来修复它!

提前致谢!

不正确的if 语句:

if(server = NULL)

应该是:

if(server == NULL)

您将 server 设置为 NULL,然后尝试取消引用 NULL 指针。

但是,即使 server 为 NULL,您的代码仍会继续并取消引用 server。在这种情况下,您应该绕过使用 server 的代码。