嗯..我不太确定这意味着什么,但是我的系统运行并运行并且没有因为记忆不足而哭泣......
我想这与系统错误122有关,因为winsock错误代码(MSDN)中没有122 ......
任何人都有线索?...
调用getaddrinfo(NULL, /*PortNumber*/, &hints, &pFinal)
编辑好吧......还有更多的代码(没有注释掉,也没有意义)
addrinfo hints, *pFinal = nullptr;
memset(&hints, 0, sizeof(hints));
hints.ai_flags = AI_PASSIVE;
hints.ai_socktype = SOCK_STREAM;
hints.ai_family = AF_INET;
if(getaddrinfo(NULL, g_ACCEPTOR_PORT_NUMBER, &hints, &pFinal))
return ERROR_BIND_SOCKET;
问题在于我的g_ACCEPTOR_PORT_NUMBER,这是一个包含
的类operator const char*()
{
std::stringstream ss;
ss << m_nPortNumber;
return ss.str().c_str();
}
我是否必须更改转换运算符?...我更喜欢使用此“STRINGINT”,因此我不需要将端口号保存为字符串和数字或明确转换它...
答案 0 :(得分:2)
getaddrinfo
来电可能是一个错误的参数。你能发布更多代码吗?
在命令提示符下键入net helpmsg 122
,您将获得:
传递给系统调用的数据区域 太小了。
答案 1 :(得分:1)
getaddrinfo
实际上会返回错误代码,您应根据getaddrinfo documentation
答案 2 :(得分:1)
问题是您operator const char*()
的实施。该函数返回后,您的stringstream
对象不再有效,因为它不在范围内。
答案 3 :(得分:0)
很可能,pFinal变量的大小太小。您需要发布更多代码才能获得更全面的答案。