程序在数组索引分配时崩溃

Nul*_*ata 0 c++ arrays indexing stack pointers

我在这里遇到一些问题.每次我运行下面的代码,我的程序都会崩溃.

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

堆栈,堆栈和堆栈的定义如下:

stacks = 8;
stackp = 0;
stack = new byte[stacks];
Run Code Online (Sandbox Code Playgroud)

而字节只是一个unsigned char.

Mic*_*urr 6

您不能使用realloc()已分配的指针new.

也许尝试类似以下内容而不是realloc():

        byte* tmp = new byte[stacks];
        delete [] stack;
        stack = tmp;
Run Code Online (Sandbox Code Playgroud)