我在这里有一个小问题。
每当我运行下面的代码时,我的程序就会崩溃。

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/

10-11 18:16