之前自己写了4个CHAR与TCHAR的编码函数,后来发现ms早就提供了类似的方法:CA2T CT2A……
但是有同事说,这两个函数不安全,有隐患,没有在意
但是真的用的时候,的确发现它们有些注意事项,简单来说,其实就是作用域的问题
Fun(CA2T(szSrc));
可以,Fun函数用转换后的TCHAR,没问题,因为没有出Fun()这个括号的作用域
tstring strDes = CA2T(szSrc);
可以,因为返回值立刻赋给了strDes,strDes有自己的存储空间,CA2T的数据作用域就在这一行,出了就不要了
TCHAR* szDes = CA2T(szSrc);
失败,这个szDes指向一个已经释放的作用域的值,下一行在用szDes就危险了,没有分配
本文探讨了CA2T与TC2A函数在转换字符编码时的潜在问题,特别是作用域管理不当可能导致的内存安全隐患。通过具体示例说明了如何安全地使用这些函数。

1424

被折叠的 条评论
为什么被折叠?



