私はFTPを介して対話する必要があるアプリケーションを開発しています。このコミュニケーションのために、私は現在Windows上でC++、Visual Studio、Pocoを使用しています。さらに下って行くときこのbad_alloc問題を解決するには?
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");
このコンストラクタは次のものを含んでいます:(I _pImplが初期化されていないデバッガ)
IPAddress::IPAddress(const std::string& addr)
{
_pImpl = IPv4AddressImpl::parse(addr);
if (!_pImpl) throw InvalidAddressException(addr);
}
IPv4AddressImplは::解析が含まれている中で参照してください。
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と、次のコード"
unsigned long ulAddr = INADDR_NONE;
ulAddr = inet_addr("91.183.48.210");
if (ulAddr == INADDR_NONE)
msg("NONE");
else
msg("SOMETHING ELSE");
私は何が間違ってここに起こっているが表示されない...これはさらなるまたは誰かがうまくいかないのか分からないデバッグする方法はありますか?
"_pimplが初期化されていません"と言うと、IPAddressコンストラクタで値が0に割り当てられているということですか? –
ip = 0xcccccc {_pImpl = ??? } CXX0076:エラー: –
_pImplの式を評価できません。したがって、おそらく初期化されていません。 –