在測試大數(shù)據(jù)量的時候,因為我的程序最后要生成一個excel報表,可是每次打開的時候,explorer.exe就報錯,我在想,我又沒惹你,你怎么不給打開呢,難道是我用的ODBC數(shù)據(jù)操作有誤?想想不對,數(shù)據(jù)不大的時候怎么沒事呢?沒辦法,拿個大數(shù)據(jù)文件debug吧!結(jié)果好不容易遇到一個CString錯誤,說程序溢出,當時忙著改錯,沒有記錄下來錯誤描述。記得那個長長的錯誤提示中包含有W2A字樣,好!因為我用到了W2A的宏!立馬回憶起來曾經(jīng)用它時遇到的問題,查了一下MSDN,《TN059: Using MFC MBCS/Unicode Conversion Macros 》,Link:http://msdn.microsoft.com/en-us/library/805c56f8%28VS.80%29.aspx
講得非常詳細,就是W2A是在棧上取得一段內(nèi)存,在程序結(jié)束時棧才會釋放取得的棧空間,所以,不能在一個大的循環(huán)中使用它,而應該在程序外面專門寫一個字符串處理小函數(shù),達到快速、安全轉(zhuǎn)換的目的。