首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用libtorrent-rasterbar和QGuiApplication的内存损坏

使用libtorrent-rasterbar和QGuiApplication的内存损坏
EN

Stack Overflow用户
提问于 2013-11-24 18:16:24
回答 1查看 193关注 0票数 0

我正试图在我的Qt5应用程序中使用libtorrent,但是仍然使用malloc():内存损坏之类的消息获取分段错误。经过几个小时的破除,我想出了一小块代码,它触发了这个问题:

代码语言:javascript
复制
int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    std::string filename = "fedora.torrent";
    libtorrent::error_code ec;
    libtorrent::add_torrent_params parameters;
    std::cerr << "111\n";
    parameters.ti = new libtorrent::torrent_info(filename, ec);;
    std::cerr << "222\n";
    return app.exec()
}

在这种情况下,torrent_info的构造函数会产生分段错误。但是,如果在创建QGuiApplication之前移动与libtorrent相关的代码,如下所示:

代码语言:javascript
复制
int main(int argc, char *argv[])
{
    std::string filename = "fedora.torrent";
    libtorrent::error_code ec;
    libtorrent::add_torrent_params parameters;
    std::cerr << "111\n";
    parameters.ti = new libtorrent::torrent_info(filename, ec);;
    std::cerr << "222\n";
    QGuiApplication app(argc, argv);
    return app.exec()
}

那它就能正常工作了。此外,这个问题只存在于32位构建中,在64位构建中,这两种变体的工作方式都是相同的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-25 09:39:20

这很可能是因为使用一组TORRENT_*定义了libtorrent,并使用不同的集合对其进行链接。其中一些定义影响在公共API中使用的某些结构的布局,以及当调用应用程序和库之间的差异导致ABI不兼容问题时。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20178064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档