BUIW 里面的一个BUG!

lijiangyun 2009-06-30 09:03:53
最近研究BUIW,发现里面存在的一个bug:

函数 ImageStaticWidget_New 里面这一行:

ImageStaticWidget *me = MALLOCREC_VTBL(ImageStaticWidget, IWidget);

这里分配内存的虚表应该是 IPropContainer 而不是 IWidget,因为Container

作为一个 Widget,虚表是不需要分配内存的,其成员 vtWidget 用来保存Widget

的虚表,而需要分配内存的是 IContainer 的虚表;

这样一个bug为什么不会出现问题呢?原因就是 IWidget 虚表大于 IContainer 虚表,

分配出来的内存足以存放 IContainer 虚表,因此除了一点内存浪费,不会出现其他问题!

应该改为:

ImageStaticWidget *me = MALLOCREC_VTBL(ImageStaticWidget, IPropContainer);
...全文
1999 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxfcct 2009-11-24
  • 打赏
  • 举报
回复
楼主是高手啊,这个问题我也发现了
nihao38 2009-11-20
  • 打赏
  • 举报
回复
iBug168 2009-11-08
  • 打赏
  • 举报
回复
...这个算是BREW的一个继承机制吧...
呵呵,要不然quereinterface的对象如何出来??

IWIDGET_QueryInterface(_pi_widget, AEEIID_CONTAINER, &pi_con),
IPROPCONTAINER_QueryInterface(_pi_con, AEEIID_WIDGET, &pi_widget),

LZ可以思考思考上面两组接口的实现,当然这只是qualcomm的一种实现方式而以.
twoconk 2009-10-09
  • 打赏
  • 举报
回复
楼主真细心!
bencharluo 2009-09-29
  • 打赏
  • 举报
回复
正在学习,多和大家讨论
FLYUP_CHEN 2009-09-02
  • 打赏
  • 举报
回复
最近也在看,还在研究中。。。
alex_goacross 2009-08-21
  • 打赏
  • 举报
回复
lijiangyun !正解!!!
muwesky 2009-08-16
  • 打赏
  • 举报
回复
汗,仔细研究一下去,呵呵。
jungwen 2009-08-16
  • 打赏
  • 举报
回复
我感觉楼主有道理,但是BUIW的每个Widget类都是这样分配的,汗,莫非都有错误?
givenup 2009-07-01
  • 打赏
  • 举报
回复
奥,继续学习……
lijiangyun 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wireless_com 的回复:]
ImageStaticWidget 我用的好好的呀
[/Quote]

我上面说过了,这个bug不会出现问题,只是有内存浪费!但是这确实是一个bug!
  • 打赏
  • 举报
回复
ImageStaticWidget 我用的好好的呀
lijiangyun 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 givenup 的回复:]
我感觉并没有错误啊,IMAGESTATICWIDGET虽然实质是propcontainer,但是它的虚拟表还是要指向AEEWIDGET.H中所有的那些基本的
widget的函数啊!
继续研究!
[/Quote]

Container 是一个特殊的 Widget, 它支持 IWidget 虚表函数,也支持 IContainer 虚表函数,看 ContainerBase 的定义:

struct ContainerBase
{
AEEVTBL(IContainer) * pvt;

IWidget widget;
AEEVTBL(IWidget) vtWidget;

...
}

vtWidget 用来保存 IWidget 虚表,它是一个结构体而不是指针,即内存不需要分配;
pvt 用来保存 IContainer 虚表,它是一个指针,需要分配内存;

因此 Container 组件在创建的时候,分配虚表内存是给 pvt 分配的,而不是 vtWidget!

givenup 2009-06-30
  • 打赏
  • 举报
回复
我感觉并没有错误啊,IMAGESTATICWIDGET虽然实质是propcontainer,但是它的虚拟表还是要指向AEEWIDGET.H中所有的那些基本的
widget的函数啊!
继续研究!
  • 打赏
  • 举报
回复
有道理,的确如此
内容概要:本报告基于寻汇与万事达卡在2026年联合发布的《超越自动化:定义智能体驱动的全球支付》白皮书,系统分析了AI智能体在B2B跨境支付领域的应用与发展。报告指出,传统跨境支付存在效率低、人工干预多、合规风险高等问题,当前正从数字化、数据化迈向“自主化”新阶段。AI智能体可在授权下自主完成支付、换汇、合规审核、对账等全流程操作,核心技术包括深度强化学习、自然语言处理和图神经网络,用于路径优化、合规解析与异常检测。报告揭示了决策可解释性不足、跨系统协同标准缺失、安全审计机制缺位三大研究空白,并探讨了法律责任归属、监管碎片化、数据主权与技术可靠性四大现实挑战。寻汇与万事达卡的合作构建了“智能体编排引擎”与全球合规决策网络,首次提出L0-L5的智能体自主化等级框架,推动行业标准化。预计2026至2027年将实现首批大规模商业部署,提升支付效率超30%。; 适合人群:金融科技研究人员、AI技术开发者、跨境支付行业从业者、企业财资管理人员及政策监管机构相关人员。; 使用场景及目标:①理解AI智能体在跨境支付中的技术架构与应用场景;②把握自主化支付的演进趋势与商业化前景;③为金融机构和技术公司布局AI驱动型支付系统提供战略参考;④助力监管机构制定适应智能体时代的合规框架。; 阅读建议:本报告兼具技术深度与产业视野,建议结合白皮书原文及相关技术文献对照研读,重点关注智能体决策逻辑、合规实现机制与跨系统集成方案,并关注后续试点项目的实际成效与监管反馈。

7,645

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧