【发布时间】:2020-07-04 09:34:11
【问题描述】:
刚接触 C++,我一直在胡思乱想,试图了解指针和解决问题等复杂系统。我制作了这个简单的程序,它将连接 char 字符串。但它总是抛出同样的错误:L'buffer is too small &&0。
这是我的代码 -
const char* str = "larry";
const char* yo{"is one of the stooges" };
size_t buffer{ std::strlen(str) + std::strlen(yo) + 1 };
std::cout << buffer;
char* buff = new char[buffer];
strcpy_s(buff, strlen(str), str);
strcat(buff, yo);
std::cout << *buff << std::endl;
delete[] buff;
这是我要求的程序输出:
27 // the size of buffer
然后程序崩溃。
请指出问题所在。 谢谢
【问题讨论】:
-
输出应该是
std::cout << buff,没有*,因为您可能想要打印整个字符串,而不仅仅是第一个字符。 -
感谢您指出错字,但这对
buffer overflow错误没有帮助。请看看您是否可以帮助我。无论如何,谢谢 -
是的,这就是为什么它是评论而不是答案。你能说出哪一行触发了错误吗?您能否通过编辑您的问题来显示整个程序输出(包括缓冲区大小)和完整的源代码(导致错误的最小可编译示例)?
-
minimal reproducible example 或者它没有发生。
-
@default-303 你需要使用strcpy_s(buff, strlen(str) + 1, str);
标签: c++ char dynamic-memory-allocation c-strings strcat