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