我在这个网站上看到了一些解决方案,但没有一个解决了我的问题。 我正在实现一个n-children,非平衡树类型,add操作给了我一个例外。 代码如下:
struct Node {
// Just to initialize the parent node to zero, default constructor
Node(Node *parent = 0) : m_parent(parent) {
}
Node *m_parent;
vector<Node *> m_children;
GameBoard m_currentBoard;
};
错误发生的地方:
Node *tempNode = 0;
// Going through each of them to create new nodes
for (unsigned int i = 0; i < availableBoards.size() ; i++) {
// Create a new node
tempNode = new Node;
tempNode->m_parent = curNode;
tempNode->m_currentBoard.setBoard(availableBoards[i]);
// This is the line when program crashes
curNode->m_children.push_back(tempNode);
}
我也试过在循环中声明tempNode,但它也没有帮助。
我从Visual Studio检查了手表,curNode
不是NULL,也不是tempNode
。
为什么我收到此错误?
感谢您的回答。
答案 0 :(得分:0)
确定问题是在调用它之前就破坏了运行第二个代码段的对象。它如下所示:
class A{
int *getAsdf();
int *asdf;
}
int main() {
A *newObj = new A;
delete newObj;
newObj->getAsdf();
}
关于如何从之前删除的对象调用方法,我没有一个线索。在像getAsdf这样的函数内部发生错误,甚至参数都是有效的。可以解释一下吗?