关于MFC的CString 访问越界问题

1. 很多控件可能都要使用CString,比如CToolTipCtrl.GetText()

如果我一开始,

        m_ToolTip.AddTool(this, m_str, &rect, TTS_ALWAYSTIP);

其中 m_str 的长度超过256字节,注意是字节,如果是UNICODE下,那就128 TCHAR。

当长度超过了256字节时,GetText()就报错,这令我相当郁闷哪!

老MFC很多内部结构存有固定数组,需要固定长度的。超出长度就会造成数组越界。

涉及到这些固定数组的API,MSDN又没好好的说明一下,着实让人头头疼。

虽然说在以前的时间,内存相当小,用固定数组是可以理解,但做这个API的人,你至少也得说明一下吧。

哪里用了固定数组,不然越界还要我们自己查。。。


2. 同样 TRACE 能处理的最大长度是 512 个 TCHAR, 即1024 byte.这些都要跟踪到MFC的代码才知道的。真是无语了!。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值