FTPを介して対話する必要があるアプリケーションを開発しています。この通信には、現在WindowsでC ++、Visual Studio、Pocoを使用しています。
次の行では、bad_alloc例外が発生します。
ftp = new FTPClientSession("127.0.0.1", 21);
だから私はダウンして最初にStreamSocketを初期化しようとしましたが、失敗します...
StreamSocket ss = new SocketAddress("127.0.0.1", 21);
さらに下に行くと、bad_allocは次の場所から来ているようです。
IPAddress * ip = new IPAddress("127.0.0.1");
そのコンストラクターには次のものが含まれます:(デバッガーで_pImplが初期化されていないことがわかります)
IPAddress::IPAddress(const std::string& addr)
{
_pImpl = IPv4AddressImpl::parse(addr);
if (!_pImpl) throw InvalidAddressException(addr);
}
IPv4AddressImpl :: parseに含まれるもの:
static IPv4AddressImpl* parse(const std::string& addr)
{
if (addr.empty()) return 0;
#if defined(_WIN32)
struct in_addr ia;
ia.s_addr = inet_addr(addr.c_str());
if (ia.s_addr == INADDR_NONE && addr != "255.255.255.255")
return 0;
else
return new IPv4AddressImpl(&ia);
#else
#if __GNUC__ < 3
struct in_addr ia;
ia.s_addr = inet_addr(addr.c_str());
if (ia.s_addr == INADDR_NONE && addr != "255.255.255.255")
return 0;
else
return new IPv4AddressImpl(&ia);
#else
struct in_addr ia;
if (inet_aton(addr.c_str(), &ia))
return new IPv4AddressImpl(&ia);
else
return 0;
#endif
#endif
}
Winsock2.h(ws2_32.lib)のinet_addrを含む次のコードは、「SOMETHINGELSE」になります。
unsigned long ulAddr = INADDR_NONE;
ulAddr = inet_addr("91.183.48.210");
if (ulAddr == INADDR_NONE)
msg("NONE");
else
msg("SOMETHING ELSE");
ここで何が問題になっているのかわかりません...これをさらにデバッグする方法はありますか、それとも誰かが何が問題になっているのか知っていますか?