问题很简单:这段代码出了什么问题?
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
答案 0 :(得分:1)
您只为[{1}}分配new_buff
个字符(并告诉dir_path
该大小),然后您想为其添加更多字符。您需要将wcscat_s
加分配为new_buff
的长度,并告诉L"\\directory"
该实际尺寸。