Visual Studio 在使用指针和 strncat 时触发断点

Posted

技术标签:

【中文标题】Visual Studio 在使用指针和 strncat 时触发断点【英文标题】:visual studio triggered a breakpoint when used pointer and strncat 【发布时间】:2022-01-18 12:40:24 【问题描述】:

我正在使用以下代码实现 JSON 分包器

int main()

  char* serializedMessage;
  serializedMessage = (char*)malloc(sizeof(char)* 1024);

  if (serializedMessage != NULL)
  
    strcat(serializedMessage, "\"");
    strncat(serializedMessage, "\":", 3);
    strncat(serializedMessage, "", 1);
    strncat(serializedMessage, "\"ds\":[", 8);
    strncat(serializedMessage, "", 1);
    std::cout  <<serializedMessage <<std::endl;
   
  return 0;

在 Visual Studio 中运行时,它会在触发断点时引发错误。我错过了什么。任何建议

【问题讨论】:

strncat 中的整数应该与您要附加的字符数相匹配。我不确定,但"\":" 不是两个字符吗? (你正在逃避一个) 【参考方案1】:

您只能在 C 字符串 的目标上使用strcat 系列函数。 serializedMessage 在您的代码中还不是 C 字符串,它是一块未初始化的内存。 How should character arrays be used as strings?

通过在开头添加一个空终止符来解决这个问题,形成一个空字符串:

if (serializedMessage != NULL)

  serializedMessage[0] = '\0';
  ...

【讨论】:

以上是关于Visual Studio 在使用指针和 strncat 时触发断点的主要内容,如果未能解决你的问题,请参考以下文章