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 时触发断点的主要内容,如果未能解决你的问题,请参考以下文章
C++ Visual Studio 非标准语法使用 '&' 创建指向成员的指针
如何在带有 Visual Studio 的 dll 导出类中使用唯一指针向量
C++ 指针使用 Visual Studio 更改地址,而不是使用 OsX 中的 Xcode 或 Linux 中的 gcc