【问题标题】:wcscat_s function - buffer errorwcscat_s 函数 - 缓冲区错误
【发布时间】:2013-07-20 22:40:33
【问题描述】:

问题很简单:这段代码有什么用?

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

【问题讨论】:

    标签: c++ windows string pointers concatenation


    【解决方案1】:

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

    【讨论】:

    • 这就是解决方案,而且非常简单!谢谢。
    猜你喜欢
    • 2022-06-13
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 2017-05-12
    • 2022-01-02
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多