免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3086 | 回复: 6

[C++] 请教string常量字符串问题 [复制链接]

论坛徽章:
0
发表于 2014-11-01 00:35 |显示全部楼层
本帖最后由 e2zhangwen 于 2014-11-27 23:07 编辑

这是出现安卓手机上的复位问题,大概场景就是在头文件中定义const string test = "test";
在一个类成员函数中有这样操作场景:
m_test += test; //m_test为类私有成员变量
程序运行时在这里挂死,调查发现会调用append(...const&)函数实现string 加法操作
反汇编append函数发现程序异常在load 一个非法地址0。
这里想请教下大虾们可了解append函数汇编在处理时,会对传参寄存器r1再次load一次?
实际分析反汇编发现将父函数传参时给r1赋值的地址再取其值并不是预期的值。
哪位大神了解详细请指点迷津,不胜感谢~~



这个问题花了将近一周定位发现是由于精简操作系统没有对全局对象进行初始化操作,全局对象没有分配到内存,所以全局对象名和常量字符串没有映射关系,导致系统复位。
多谢各位

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
发表于 2014-11-05 10:29 |显示全部楼层
语法上没什么问题,其他地方引起的。

论坛徽章:
0
发表于 2014-11-08 21:52 |显示全部楼层
arm 编译器对C++支持不知道可有什么局限性
回复 2# linux_c_py_php


   

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
发表于 2014-11-09 14:11 |显示全部楼层
基本上只能是其它程序重写了string的内容。 如果能重现,下数据断点。

论坛徽章:
0
发表于 2014-11-27 23:04 |显示全部楼层
没有trace口,不能进行调试
回复 4# folklore


   

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
发表于 2014-11-28 11:22 |显示全部楼层
你是说全局变量的构造函数没有调用吗?回复 1# e2zhangwen


   

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
发表于 2014-11-28 12:07 |显示全部楼层
回复 6# zsszss0000


    很有可能噬, 没注意到楼主说的是在嵌入系统中,
如果没有C++的CRT, 全局变量不会被自动构筑。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP