_tcscat在Debug和Release下的问题
来源:互联网 发布:windows 7 sp2 编辑:程序博客网 时间:2024/05/01 11:58
背景:
有如下这么一段代码,作用是获取当前程序的所在路径(C:\work\A.exe),然后将”A.exe”去掉,拼装为”C:\work\inject.dll”
TCHAR szDllPath[MAX_PATH] = _T("");TCHAR szExePath[MAX_PATH] = _T("");GetModuleFileName(GetModuleHandle(NULL), szExePath, MAX_PATH);int nIndex = 0;int i = lstrlen(szExePath);while (i > 0){ if (szExePath[i] == _T('\\')) { nIndex = i; break; } i--;}for (i = 0; i < nIndex + 1; i++ ){ szDllPath[i] = szExePath[i];}_tcscat(szDllPath, _T("InjectDll.dll"));
问题:
1.Debug模式下运行,得到的结果是预期的"C:\\work\\inject.dll"。 2.Release模式下运行,得到的结果却是"C:\\work\\",也就是_tcscat函数运行不成功。
结论:
1.发现使用_tcscat可能存在风险问题,换用_tcscat_s就OK了。 2.自从vc2005开始,微软力推_s安全版函数以取代不安全的标准非_s版函数,例如:strcat_s、strcopy_s、sprintf_s、_tcsnset_s、_tcsset_s、_tcstok_s...等等 3.代码静态走查是可以关注字符串运算是否使用了_s安全版函数。
0 0
- _tcscat在Debug和Release下的问题
- 关于assert函数在debug 和release下的问题
- Debug和Release下调试的问题
- Debug和Release的问题
- Debug 模式 和 Release 模式下,一个线程在"编译"上引发的问题
- volatile在debug和release模式下的意义
- 在vs下讨论debug和release版本的区别
- Opencv在Release和Debug不同模式下的配置
- vector debug和release下不一致的问题
- vc debug 和release 下 ReadFile 问题
- Release和Debug模式的区别以及Opencv在Release和Debug不同模式下的配置
- 调试Release模式下遇到的问题 - Debug和Release的差异。
- VC++ 2005下Debug / Release的问题
- debug 和release 模式下的NSLog
- 关于VC下的 Debug和Release
- VS2008下Debug和Release的区别
- 定义debug 和release下的NSLog
- release 和 debug 的问题集
- hdu 5007
- come on 1
- bzoj3293 分金币
- Servlet介绍(一)
- ddpush 学习之路 3 StringUtil.java
- _tcscat在Debug和Release下的问题
- 硬盘开盘换磁头
- linux比较工具-meld
- Java基础视频教程第11天_多线程一
- CodeForces 277A Learning Languages (并查集)
- 译文-Android的MVP模式开发系列文章(2)
- 最受欢迎的开源项目
- python 可连接多个客户端的服务器 fork版
- Sicily 12259. Message Relay