C++ 大小为/2的数组始终未定义

C++ 大小为/2的数组始终未定义,c++,linked-list,stack,C++,Linked List,Stack,我遇到了一个非常奇怪的错误,我的数组总是未定义为size/2。我有一个链接堆栈,每个节点包含一个大小为32000的数组,问题是在每个数组的16000位置,由于某种原因,该值未定义 该节点是: template <class myType> struct nodeType { myType dataSet[SIZE]; int top; nodeType<myType> *link; }; 我就是不明白为什么每个节点数组中都没有定义位置16000。我是不是做错

我遇到了一个非常奇怪的错误,我的数组总是未定义为size/2。我有一个链接堆栈,每个节点包含一个大小为32000的数组,问题是在每个数组的
16000
位置,由于某种原因,该值未定义

该节点是:

template <class myType>
struct nodeType {
  myType dataSet[SIZE];
  int top;
  nodeType<myType> *link;
};
我就是不明白为什么每个节点数组中都没有定义位置
16000
。我是不是做错了什么?

我看到了一个问题:

if (stackTop->top == 0) {
    nodeType<myType> *toDelete = stackTop;
    stackTop = stackTop->link;
    delete stackTop;          // You should be deleting toDelete here
} 
stackTop->top--;    // Oops, just used a deleted pointer
if(stackTop->top==0){
nodeType*toDelete=stackTop;
stackTop=stackTop->link;
delete stackTop;//您应该在此处删除toDelete
} 
堆栈顶部->顶部--;//哎呀,刚才用了一个删除的指针

使用以前删除的指针会调用未定义的行为,这很可能是问题的根源。您还应该检查当您从空堆栈弹出时,
stackTop
stackTop->link
是否在某个点为空。

并且大小为31998的数组不会发生这种情况?这是在乞求一个新的值。只是好奇,stackTop->top++和--正在按您的预期工作?您有
删除stackTop
-您的意思是
删除toDelete
?它“未定义”是什么意思?是的,这是我知道我一定犯过的简单错误。谢谢
for (int i=testSize2; i>0; i--) {
    if (iStackBig.top() != i) {
        workedStk = false;
    }
    iStackBig.pop();
}
if (stackTop->top == 0) {
    nodeType<myType> *toDelete = stackTop;
    stackTop = stackTop->link;
    delete stackTop;          // You should be deleting toDelete here
} 
stackTop->top--;    // Oops, just used a deleted pointer