<分区>
我有一个刚刚开始出现段错误的简单程序。 main()
函数看起来像这样:
int main()
{
try
{
std::string peerRequestPort;
std::cout << "enter port listening: ";
std::cin >> peerRequestPort;
asio::io_service io_service;
network::PeerManager peerManager(network::Peer({"0,0,0,0",peerRequestPort}));
network::PeerRequestServer peerRequestServer(io_service,peerRequestPort);
peerRequestServer.Start(peerManager);
我在创建 asio::ip::tcp::acceptor
时遇到段错误在PeerRequestServer
构造函数。 PeerManager
的构造函数不做任何数据操作或任何事情,它只是存储提供的 Peer
结构。 PeerRequestServer
构造函数也不做任何事情,它只是启动一个 asio::ip::tcp::acceptor
使用提供的 asio::io_service&
.
调用栈是
#0 0041C77D asio::detail::service_registry::keys_match(key1=..., key2=...)
#1 ?? 0x0041cbd2 in asio::detail::service_registry::do_use_service (this=0xa631a0, key=..., factory=0x41cef8 <asio::detail::service_registry::create<asio::socket_acceptor_service<asio::ip::tcp> >(asio::io_service&)>)
#2 0041CA6A asio::detail::service_registry::use_service<asio::socket_acceptor_service<asio::ip::tcp> >(this=0xa631a0)
#3 004116CB asio::use_service<asio::socket_acceptor_service<asio::ip::tcp> >(ios=...)
#4 00412A2B asio::basic_io_object<asio::socket_acceptor_service<asio::ip::tcp>, true>::basic_io_object(this=0x28fcec, io_service=...)
#5 00413079 asio::basic_socket_acceptor<asio::ip::tcp, asio::socket_acceptor_service<asio::ip::tcp> >::basic_socket_acceptor(this=0x28fcec, io_service=..., endpoint=..., reuse_addr=true)
#6 00409513 network::PeerRequestServer::PeerRequestServer(this=0x28fcec, ioService=..., portListen=...)
#7 00401B24 _fu38___ZSt3cin()
这里是 PeerRequestServer
构造函数:
PeerRequestServer::PeerRequestServer(asio::io_service& ioService, std::string portListen)
: m_acceptor(ioService, tcp::endpoint(tcp::v4(),std::stoi(portListen)))
{
std::clog << __func__ << std::endl;
}
还有 PeerManager
小号:
PeerManager::PeerManager(Peer self)
: m_self(self)
{
}
所以我看不到从 main 开始到 PeerRequestServer
的位置构造函数,我有可能导致段错误...