-
-
未解决
[求助] 关于分析报告的缓冲区溢出
-
发表于:
2019-4-23 09:19
1255
-
使用c/c++的VS分析工具,提示这个;
WCHAR szExePathW[MAX_PATH];
GetModuleFileNameW(NULL, szExePathW, sizeof(szExePathW));
WCHAR butf[5] = { 0 };
char szIteFile[] = "6666";
MultiByteToWideChar(CP_ACP, NULL, szIteFile, strlen(szIteFile), butf, sizeof(butf));
经测试:
及
输出结果都一样,也没有内存报错
使用以下方法同样没有内存保存.
那么问题来了. Windows提供的这些API,参数究竟是传递1字节为单位的缓冲区大小,还是根据WCHAR和CHAR不同进行独立计算缓冲区大小?
VS分析工具分析的是对的还是错的?
GetModuleFileNameA和
GetModuleFileNameW提供解释都是TCHAR 也就是WCHAR. 直接都按宽字符算,但是实际操作发现它和MultiByteToWideChar一样
MultiByteToWideChar提供的解释是 characters 也就是char. 按单字符算.但是实际操作发现好像并不是这样..
以上是根据网页翻译的,我也不知道理解是否对错...
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2019-4-23 09:24
被ezrealik编辑
,原因: