我有这部分代码:
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)错误,但我不确定问题是什么。我尝试打印出变量的大小。
std::cout << sizeof(server_address.sin_addr.s_addr) << " - " << sizeof(server->h_addr_list) << std::endl;
此行打印&#34; 4 - 8&#34;如果我要复制,结果是否应该相同?
此外:
std::cout << server->h_length << std::endl;
这一行单独导致分段错误。所以我相信访问这个变量会导致问题。我需要你的帮助来修复它!
提前谢谢!
答案 0 :(得分:1)
{state} {错误if
州:
if(server = NULL)
应该是:
if(server == NULL)
将server
设置为NULL,然后尝试取消引用NULL指针。
但是,即使server
为NULL,您的代码也会继续,并取消引用server
。在这种情况下,您应该绕过使用server
的代码。