C++ 大小为/2的数组始终未定义
我遇到了一个非常奇怪的错误,我的数组总是未定义为size/2。我有一个链接堆栈,每个节点包含一个大小为32000的数组,问题是在每个数组的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。我是不是做错
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