我在这里有一个小问题。
每当我运行下面的代码时,我的程序就会崩溃。
void Wingcod::push(byte b)
{
stack[stackp] = b;
stackp++;
if(stackp >= stacks)
{
stacks += 16;
try
{
realloc(stack,stacks);
}catch(bad_alloc*)
{
cerr << "STACK OVERFLOW";
exit(1);
}
}
}
并且stack,stackp和stacks的定义如下:
stacks = 8;
stackp = 0;
stack = new byte[stacks];
字节只是一个
unsigned char
。 最佳答案
不允许在用realloc()
分配的指针上使用new
。
也许尝试以下方法代替realloc()
:
byte* tmp = new byte[stacks];
delete [] stack;
stack = tmp;
关于c++ - 数组索引分配时程序崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9086548/