2010-12-06 28 views
1

嗯..我真的不知道這意味着什麼,但我的系統運行和運行,並沒有哭memeory不足運行...WSAGetLastError()返回122

我猜它與系統錯誤做122,這是因爲在Winsock錯誤代碼(MSDN)沒有122 ...

任何人都得到了線索?...

它occures在通話過程中getaddrinfo(NULL, /*PortNumber*/, &hints, &pFinal)

編輯好吧。 ..繼承人更多的代碼(有它不註釋掉,doesn't意義,太)

  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」,所以我不需要將端口號保存爲字符串和數字或明確地將其轉換...

+1

發佈更好的代碼,將PortNumber註釋掉是沒有意義的。 – 2010-12-06 16:32:21

回答

1

問題是你的執行operator const char*()。一旦該函數返回,您的stringstream對象不再有效,因爲它不在範圍內。

2

可能是getaddrinfo調用中的一個錯誤參數。你能發佈更多的代碼嗎?

鍵入net helpmsg 122在命令提示符下,你會得到:

傳遞給系統調用 的數據區域太小。

+0

確實發佈了更多代碼 – Incubbus 2010-12-06 17:20:59

+0

讓那個操作符返回一個`std :: string`,以便在ss.str()被破壞時數據不會超出範圍 – 2010-12-06 17:26:24

0

更可能的是指定的值,則pFinal變量的尺寸太小。您需要發佈更多代碼才能獲得更全面的答案。

相關問題