矢量:AccountServer.exe中0x00066314处未处理的异常:0xC0000005:读取位置0xcccc
Vector: Unhandled exception at 0x00066314 in AccountServer.exe: 0xC0000005: Access violation reading location 0xccccccd0
class Connection
{
public:
explicit Connection(boost::asio::io_service& io_service);
virtual ~Connection();
boost::asio::ip::tcp::socket& socket();
virtual void OnConnected()=0;
void Send(uint8_t* buffer, int length);
bool Receive();
private:
void handler(const boost::system::error_code& error, std::size_t bytes_transferred );
boost::asio::ip::tcp::socket socket_;
};
-----------------------------------------------------------------------------------
Server::Server(boost::asio::io_service& io_service,short port)
: acceptor_(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port)){
m_connections = new std::vector<Connection*>();
start_accept();
std::cout<<"Socket accepting connections..."<<std::endl;
}
Server::~Server()
{
m_connections->clear();
delete m_connections;
}
void Server::start_accept(){
/* Connection::pointer new_connection =
Connection::create(acceptor_.io_service());*/
acceptor_.async_accept(m_connections->front()->socket(),
boost::bind(&Server::handle_accept, this, m_connections,
boost::asio::placeholders::error));
}
它构建的项目没有任何错误,但当我试图运行程序时,它中断了,并给了我这个错误
Unhandled exception at 0x00066314 in AccountServer.exe: 0xC0000005: Access violation reading location 0xccccccd0.
这里怎么了?!
假设这里是Visual C++,我认为这个问题可能是相关的;您正试图取消引用堆栈上未初始化的指针。
具体来说,在初始化指向向量的指针之前,您将调用start_accept((;显然,您的Server对象位于堆栈上,而要访问的向量结构中的第一个字段位于偏移量4处。
此行
m_connections = new std::vector<Connection*>();
创建一个指针向量。指针何时初始化?
在这里,假设它们指向socket()
acceptor_.async_accept(m_connections->front()->socket(),
相关文章:
- 在类 12.exe 中0x7B37FF80 (ucrtbased.dll) 引发异常: 0xC0000005:访问冲突读
- (此函数用于计算 SMA).在 FA.exe 中0x00509159引发异常: 0xC0000005:访问冲突读取位置0
- 0x0F50DF58:0xC0000005:访问冲突读取位置0x0047CA04时未处理的异常
- 实验室中0x6BE20E11 (ucrtbased.dll) 的未处理异常.exe: 0xC0000005:访问冲突读取
- 在 "<name>.exe" 中0x00007FFF168E1657 (vcruntime140d.dll) 引发异常:0xC0000005:访问冲突写入位置0x0000000000000
- mystring.exe中的0x0FC9E559(ucrtbaseed.dll)的未经手法异常:0xc0000005:访
- 在2.exe中的0x00DE181818的未经手法异常:0xc0000005:访问违规写作位置0xcd7cbe10
- NVIDIA 在 <work.exe>0xC0000005 中0x002a2da2未处理的异常:访问违规读取位置0x00000000
- 在 DirectXGame.exe 中0x00B84CD6出现未经处理的异常:0xC0000005:访问冲突读取位置0x
- OpenGL 和 GLUT 中0x009f240e处未处理的异常 - 101.exe:0xC0000005:访问违规写入
- Dijkstra 中0x001e1078 s_Algorithm.exe的未处理异常:0xC0000005:访问冲突读取位置0xbaadf00d
- BunkerBuilder.exe中0x0070C75C处的首次机会异常:0xC0000005:写入位置0xCCCCC0
- 引擎.exe 0x00000000时未处理的异常: 0xC0000005:访问冲突
- 0xC0000005中0x770115de处未处理的异常:使用递归矢量搜索读取位置0xccccccc0时发生访问冲突
- main.exe 中0x779615de处未处理的异常:0xC0000005:访问违规写入位置0x003f0014
- 错误 linkedlist .exe 中0x00D0345E处的未处理异常: 0xC0000005:访问违规写入位置0x
- 空引用如何导致代码0xc0000005的 SEH 异常
- 首次插入静态 STL 集会导致引发未经处理的异常0xC0000005:引发访问冲突
- 程序.exe中0x010F2F1C时未处理的异常: 0xC0000005:访问冲突读取位置0xCCCCCCD0
- 第 1 章.exe中0x003860EF未处理的异常: 0xC0000005:访问违规写入位置0x0038EE7C