SOUI官方论坛

 找回密码
 立即注册
查看: 930|回复: 3

使用STL的坑

[复制链接]
  • TA的每日心情
    奋斗
    2022-7-4 09:45
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    59

    主题

    590

    帖子

    5517

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    5517

    突出贡献优秀版主

    发表于 2019-8-16 10:39:42 | 显示全部楼层 |阅读模式
    前几天做CEF控件,搞了一个taskhandler模块,里面用到了std::list, std::string, 结果总是莫名其妙的崩溃。
    调试发现就是在执行stl的方法的时候,变量的值被莫名的改变了。
    后来把stl的string, list替换成soui的版本就好了。
    最后终于想明白了为什么。
    问题的关键在于我的SOUI是2008编译的dll.
    但是我的CEF控件是用2017编译的,taskhandler对象又在头文件里声明了对stl对象的访问。
    2008,2017的stl版本是不一样的,导致2017包装头文件的时候使用的是2017版本的stl,但是运行的时候又使用的2008版本的stl, 并直接导致了内存对齐很问题。
    看来还是用SOUI的对象安全。;P
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 946 天

    [LV.10]以坛为家III

    581

    主题

    1343

    帖子

    2万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    28876
    发表于 2019-8-16 10:44:11 | 显示全部楼层
    谢谢楼主分享,期待SOUI一统天下:lol

    该用户从未签到

    0

    主题

    14

    帖子

    98

    积分

    24:00金丹期

    Rank: 2

    积分
    98
    发表于 2019-8-16 13:06:32 | 显示全部楼层
    原来老大也遇到了这个问题,我之前老是遇到,看来还是基本类型靠谱 :lol
  • TA的每日心情
    开心
    2020-3-20 11:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    4

    帖子

    65

    积分

    24:00金丹期

    Rank: 2

    积分
    65
    发表于 2019-8-20 15:15:51 | 显示全部楼层
    清空容器的时候里面对象的释放操作也不一样,好像是VS2008正常的代码在VS2010里面会因为重复释放崩溃。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|SOUI官方论坛

    GMT+8, 2024-5-19 02:21

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表