我将值作为字符串添加到组合框中。下面是我的代码。
平台 Windows XP,我正在使用Microsoft Visual Studio 2003
语言C++
遇到错误 -> “运行时检查失败 #2 - 变量‘缓冲区’周围的堆栈已损坏。”
如果我将缓冲区的大小增加到 4 及以上,那么我将不会收到此错误。
我的问题与如何修复该错误无关,但我想知道如果缓冲区大小 = 2,为什么会出现此错误。
根据我的逻辑,我给出了缓冲区大小 = 2,因为 char[0] 将存储 char[1] = null 终止字符的阀门。
现在由于 char 可以存储从 0 到 255 的值,我认为这应该没问题,因为我插入的值是从 1 到 63,然后是从 183 到 200。
CComboBox m_select_combo;
const unsigned int max_num_of_values = 63;
m_select_combo.AddString( "ALL" );
for( unsigned int i = 1; i <= max_num_of_values ; ++i )
{
char buffer[2];
std::string prn_select_c = itoa( i, buffer, 10 );
m_select_combo.AddString( prn_select_c.c_str() );
}
const unsigned int max_num_of_high_sats = 202 ;
for( unsigned int i = 183; i <= max_num_of_high_sats ; ++i )
{
char buffer[2];
std::string prn_select_c = itoa( i, buffer, 10 );
m_select_combo.AddString( prn_select_c.c_str() );
}
各位大佬能不能给个思路,我不明白什么?