关于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的代码才知道的。真是无语了!。。。


你可能感兴趣的:(关于MFC的CString 访问越界问题)