在测试大数据量的时候,因为我的程序最后要生成一个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是在栈上取得一段内存,在程序结束时栈才会释放取得的栈空间,所以,不能在一个大的循环中使用它,而应该在程序外面专门写一个字符串处理小函数,达到快速、安全转换的目的。