gpt4 book ai didi

c++ - 使用 socketio-client-c++ 和 boost asio io_service 时访问冲突异常

转载 作者:行者123 更新时间:2023-11-30 03:38:13 25 4
gpt4 key购买 nike

我正在尝试将 boost asio 库 (1.61) 中的 io_service 与 socketio-client-c++ 结合使用,但我的代码抛出了访问冲突异常,经过数小时的调试我无法找出原因。在 win_mutex.hpp 中的以下位置抛出异常:

void lock()
{
-> ::EnterCriticalSection(&crit_section_);
}

代码很简单:

int main(int argc, char* argv[]) {
boost::asio::io_service io_service;
auto io_service_work = std::make_shared<boost::asio::io_service::work> (io_service);

sio::client client_;
client_.connect("http://localhost:1337");

// io_service.run();
}

我想从main使用io_service,而socketio内部也使用了一个io_service,这可能是问题的原因。

您可以在此处下载包含 socketio 源代码 和二进制文件 的完整项目:http://stackoverflow-sehe.s3.amazonaws.com/7f1afa6a-883f-4941-8371-31ccbd8514a5/socket-io.zip ¹

有什么建议吗?

¹ 链接已编辑;链接(以前是 88M,现在是 443k)

最佳答案

因为该行只是使用某物的地址调用公共(public) Win32 API,所有可能导致这种情况发生的原因是 this 随机指向某物(例如破坏了 win_mutex,其他东西, protected 内存甚至 nullptr)。

这表示 Undefined Behaviour . UB 有无数可能的来源,您的代码不足以得出任何结论。但在 Asio 中,99% 的时间是由于没有将对象保留足够长的时间来完成对其的异步操作。

关于c++ - 使用 socketio-client-c++ 和 boost asio io_service 时访问冲突异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39725156/

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