【问题标题】: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

标签: c++ oop


【解决方案1】:

char 缓冲区的长度必须为 27 chars。对于所有 C 样式字符串都有的 26 个字母,加上一个尾随的 '\0' 字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 2014-10-07
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多