wcscat_s函数-缓冲区错误

wcscat_s function - buffer error

本文关键字:缓冲区 错误 函数 wcscat      更新时间:2023-10-16

问题很简单:这段代码的frong是什么?

  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 上的缓冲区太小

您只为dir_path分配new_buff个字符(并告诉wcscat_s该大小),然后您想向其添加更多字符。您需要分配new_buff加上L"\directory"的长度,并告诉wcscat_s实际大小。