为什么我的代码在尝试复制字符数组时引发 C6386 错误?



我在以下代码上收到 C6386 的 C++ 警告:

int m_wordNumber = getRandomNumber();
//get word size
size_t m_wordSize = strlen(m_wordsArray[m_wordNumber]);
//create word arrays
char* m_chosenWord = new char[m_wordSize];
char* m_blankArray = new char[m_wordSize];
int m_incorrectGuessCounter = 0;
generateArray(m_blankArray, m_wordSize);
//copy word to new array
strcpy_s(m_chosenWord, m_wordSize + 1, m_wordsArray[m_wordNumber]);
//create temp array and output word
char * m_tempWordHolder = nullptr;
std::cout << m_chosenWord << std::endl;

引发警告的行是strcpy_s行,它所尝试做的只是将字符串从字符数组复制到不同的字符数组。

任何帮助将不胜感激,谢谢。

警告如下:

警告 C6386 写入"m_chosenWord"时缓冲区溢出:可写大小为"m_wordSize*1"字节,但可能会写入"7"字节

分配m_chosenWord时,分配m_wordSize字符。然而,在

strcpy_s(m_chosenWord, m_wordSize + 1, m_wordsArray[m_wordNumber]);

你正在写m_wordSize + 1字符。在初始分配中,您还希望添加+1

最新更新