昨晚组里一个同学,一个人解Bug解到凌晨还在公司,因为第二天他要开始休假,想解完再走。我让他赶紧回家,等我今天来看一下很快就可以解决。然鹅今天从早上一直干到半夜,我差点也下不了班。最终还是解决了,是一个典型的c++野指针问题。出问题报错的地方不是根源,内存被随机篡改,就会导致随机的地方发生crash。上次发生类似的问题,我花了半个月才解决,而且还是靠运气碰巧看到了有越界的问题代码。这次使用了Clang提供的AddressSanitizer功能找到的,可以在发生越界的地方直接给个crash。主要的时间花在了安卓设备上,iOS一个勾选的事,安卓要跑起来这个功能还需要root过的设备,最终调通的时候报错信息无比明确,直接指出了哪个函数有问题。原来是加了个数据上报搞出来的……这件事告诉我们:1.要善于利用已有工具分析问题。2.写c++要严谨,主动小心避免内存问题,少调试Bug,可以节省一半开发时间。3.做安卓开发太苦了。
今天是电影大师英格玛·伯格曼诞辰101周年。
无论是《野草莓》里没有指针的表或棺材里的人,还是《第七封印》里骑士与死神对弈的场景,但凡看过伯格曼电影的观众,很少有人会忘记这些奇妙的经典影像。
公众对伯格曼作品的评价一向是“晦涩难懂”,但人们却不得不承认,那些画面仿佛烙印在灵魂上,在你最意想不到的时候冲击着心灵。
#inspiration# #icon#
无论是《野草莓》里没有指针的表或棺材里的人,还是《第七封印》里骑士与死神对弈的场景,但凡看过伯格曼电影的观众,很少有人会忘记这些奇妙的经典影像。
公众对伯格曼作品的评价一向是“晦涩难懂”,但人们却不得不承认,那些画面仿佛烙印在灵魂上,在你最意想不到的时候冲击着心灵。
#inspiration# #icon#
【内存二三事: Xcode 内存图、Instruments 可视化检测循环引用】
作者:邓轻舟
链接:https://t.cn/EUBMGNb
导读
小结下,内存管理的语义:
需要该对象的时候,他就得在。不需要他的时候,他最好被释放了。
合理的利用资源。
需要该对象的时候,他不在,释放早了。
野指针问题,用僵尸对象调试
给他发消息,程序会崩,EXC_BAD_INSTRUCTION
不需要该对象的时候,他还在。内存可能泄漏了。
一般是循环引用 ( retain cycle )
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
作者:邓轻舟
链接:https://t.cn/EUBMGNb
导读
小结下,内存管理的语义:
需要该对象的时候,他就得在。不需要他的时候,他最好被释放了。
合理的利用资源。
需要该对象的时候,他不在,释放早了。
野指针问题,用僵尸对象调试
给他发消息,程序会崩,EXC_BAD_INSTRUCTION
不需要该对象的时候,他还在。内存可能泄漏了。
一般是循环引用 ( retain cycle )
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
✋热门推荐