调试断言失败(缓冲区太小)构造函数初始化
Posted
技术标签:
【中文标题】调试断言失败(缓冲区太小)构造函数初始化【英文标题】:Debug assertion failed (Buffer too small) constructor initialization 【发布时间】:2016-04-05 12:31:09 【问题描述】:我写了一个代码...我必须在其中使用“strcpy_s”...程序正在编译但我调试断言失败...我研究了一下发现这个错误是由于不正确“strcpy_s”参数中的大小...但我仔细检查过,我的大小还可以...我不明白为什么它不工作...欢迎任何帮助....期待感谢...还有一个我需要在构造函数本身中初始化构造函数成员(在我的项目中指示...)
来自头文件
class CyclicShift
private:
char fUpperCase[26];//A-Z
char fLowerCase[26];//a-z
public:
CyclicShift();
在.cpp文件中(初始化构造函数)
CyclicShift::CyclicShift()
strcpy_s(fUpperCase, sizeof (fUpperCase), "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
strcpy_s(fLowerCase, sizeof (fLowerCase), "abcdefghijklmnopqrstuvwxyz");
【问题讨论】:
为什么不使用std::string
?
【参考方案1】:
char
缓冲区的长度必须为 27 char
s。对于所有 C 样式字符串都有的 26 个字母,加上一个尾随的 '\0' 字符。
【讨论】:
以上是关于调试断言失败(缓冲区太小)构造函数初始化的主要内容,如果未能解决你的问题,请参考以下文章
.net 核心 Web 应用程序因“提供给函数的缓冲区太小”错误而失败
.NET 和 MySQL 错误 - 对 SSPI 的调用失败...“收到的消息意外或格式错误”和“提供给函数的缓冲区太小”