首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++空闲堆块3da9e0释放后在3 was 08修改

C++空闲堆块3da9e0释放后在3 was 08修改
EN

Stack Overflow用户
提问于 2014-01-22 13:06:23
回答 1查看 2.3K关注 0票数 0

我在这个网站上看到了一些解决方案,但是没有一个解决了我的问题。我正在实现一个n-子程序,不平衡的树类型和add操作给了我一个异常。守则如下:

代码语言:javascript
复制
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;
};

发生错误的地方:

代码语言:javascript
复制
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的手表,curNode不是NULL,也不是tempNode

我为什么要犯这个错误?

谢谢你的回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-22 13:30:57

问题是在调用第二个代码段之前就销毁了运行第二个代码段的对象。其内容如下:

代码语言:javascript
复制
class A{
     int *getAsdf();
     int *asdf;
}

int main() {
    A *newObj = new A;
    delete newObj;
    newObj->getAsdf();
}

对于如何从以前被删除的对象中调用方法,我一点也不知道。错误发生在像getAsdf这样的函数中,甚至参数都是有效的。有人能解释一下吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21283799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档