gpt4 book ai didi

变量周围的 C++ 堆栈已损坏

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:34 25 4
gpt4 key购买 nike

我在编写的代码中收到以下错误 -运行时检查失败 #2 - 变量“pChar”周围的堆栈已损坏

研究表明问题与 pHexValueBuffer = new char[256] 和 memset 以及我如何使用名副其实的存储值以返回十六进制数而不是十进制数有关。我的研究表明,不知何故,我超出了我设定的内存范围,只是不了解如何做。

关于如何解决这个问题有什么建议吗?

void DecToHex()
{
string input;
int total = 0;
int index = 254;
char pChar;
char* pHexValueBuffer = new char[256];
memset(pHexValueBuffer, 0, 256 );
pHexValueBuffer[255] = '\0';

cout << "Enter a Decimal Number\n\n" << flush;

cin >> input;
unsigned int iValue = atoi(input.c_str());


do
{
--index;
unsigned int iMod = iValue % 16;
if( iMod > 9 )
{
switch (iMod)
{
case 10:
pHexValueBuffer[index] = 'A';
break;
case 11:
pHexValueBuffer[index] = 'B';
break;
case 12:
pHexValueBuffer[index] = 'C';
break;
case 13:
pHexValueBuffer[index] = 'D';
break;
case 14:
pHexValueBuffer[index] = 'E';
break;
case 15:
pHexValueBuffer[index] = 'F';
break;
default:
break;
}

}
else
{
itoa(iMod, &pChar, 10 );
pHexValueBuffer[index] = pChar;
}
iValue = iValue/16;

} while( iValue > 0 );

cout << "Decimal Number = " << &pHexValueBuffer[index];
delete []pHexValueBuffer;
pHexValueBuffer = NULL;
}

最佳答案

问题就在这里

char pChar;

itoa(iMod, &pChar, 10 );

itoa 处理一组字符,而不是单个字符。

您可以找到有关如何使用 itoa 的示例 here .

此外,如果您无论如何都打算使用 itoa,则可以避免整个 DecToHex() 函数,只需调用 itoa

int val;
char pHexValueBuffer[256]
cout << "Enter a Decimal Number\n\n" << flush;
cin >> val;
itoa(val, pHexValueBuffer, 16);
cout << "Hexadecimal Number = " << pHexValueBuffer;

大功告成。

关于变量周围的 C++ 堆栈已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13467583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com