问题很简单:这段代码有什么问题?
size_t buff = 1;
size_t new_buff;
WCHAR *var_path;
WCHAR *dir_path;
var_path = new WCHAR[buff];
new_buff = GetEnvironmentVariableW(L"APPDATA", var_path, buff);
if (new_buff == 0) {
return 1;
} else if (new_buff > buff) {
delete[] var_path;
var_path = new WCHAR[new_buff];
GetEnvironmentVariableW(L"APPDATA", var_path, new_buff);
}
dir_path = new WCHAR[new_buff];
wcscpy_s(dir_path, new_buff, var_path);
wcscat_s(dir_path, new_buff, L"\\directory");
它说 wcscat_s
上的 Buffer 太小了
最佳答案
您只为 dir_path
分配了 new_buff
个字符(并告诉 wcscat_s
这个大小),然后您想要向它追加更多的字符。你需要分配new_buff
加上L"\\directory"
的长度,同时告诉wcscat_s
关于实际大小。
关于c++ - wcscat_s 函数 - 缓冲区错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17783456/