关于MFC的CString 访问越界问题
生活随笔
收集整理的這篇文章主要介紹了
关于MFC的CString 访问越界问题
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 很多控件可能都要使用CString,比如CToolTipCtrl.GetText()
如果我一開始,
?? ???? m_ToolTip.AddTool(this, m_str, &rect, TTS_ALWAYSTIP);
其中 m_str 的長度超過256字節(jié),注意是字節(jié),如果是UNICODE下,那就128 TCHAR。
當(dāng)長度超過了256字節(jié)時(shí),GetText()就報(bào)錯(cuò),這令我相當(dāng)郁悶?zāi)?#xff01;
老MFC很多內(nèi)部結(jié)構(gòu)存有固定數(shù)組,需要固定長度的。超出長度就會造成數(shù)組越界。
涉及到這些固定數(shù)組的API,MSDN又沒好好的說明一下,著實(shí)讓人頭頭疼。
雖然說在以前的時(shí)間,內(nèi)存相當(dāng)小,用固定數(shù)組是可以理解,但做這個(gè)API的人,你至少也得說明一下吧。
哪里用了固定數(shù)組,不然越界還要我們自己查。。。
2. 同樣 TRACE 能處理的最大長度是 512 個(gè) TCHAR, 即1024 byte.這些都要跟蹤到MFC的代碼才知道的。真是無語了!。。。
總結(jié)
以上是生活随笔為你收集整理的关于MFC的CString 访问越界问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC控件的绘制与响应顺序——ZOrde
- 下一篇: 仿Mathematica中的函数Prod