gpt4 book ai didi

c++ - vector :AccountServer.exe 中 0x00066314 处的未处理异常:0xC0000005:访问冲突读取位置 0xccccccd0

转载 作者:行者123 更新时间:2023-11-28 01:05:58 24 4
gpt4 key购买 nike

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++,我认为 this question可能相关;您正在尝试取消引用堆栈上未初始化的指针。

具体来说,您在初始化指向 vector 的指针之前调用 start_accept();显然,您的 Server 对象存在于堆栈中,并且要访问的 vector 结构中的第一个字段存在于偏移量 4 处。

关于c++ - vector :AccountServer.exe 中 0x00066314 处的未处理异常:0xC0000005:访问冲突读取位置 0xccccccd0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6096818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com