c++ - 0xfeeefeee 段错误,但简单的分配更改?

标签 c++ segmentation-fault fault

我正在实现一个 Barnes-Hut 模拟程序,并有这段简短的代码:

BhTree *BhTree::make() {
    return new BhTree();
}

其余的代码(大量)然后工作得很好。创建的节点在程序生命周期内从不被删除。使用这个事实,我想通过使用这个来优化分配:

vector<BhTree> mSpace;
BhTree *BhTree::make() {
    mSpace.push_back(BhTree());
    return &mSpace[mSpace.size()-1];
}

这会在代码的不相关部分导致可怕的段错误。有趣的是,在递归函数中,this 突然被转换为 0xfeeefeee,即堆释放内存的 Microsoft 代码。

任何人都可以立即看出问题所在吗? vector mSpace 在别处从未访问过。

最佳答案

随着 std::vector 的增长,它将为其内容重新分配内存并使您之前分发的所有指针无效。

关于c++ - 0xfeeefeee 段错误,但简单的分配更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23551621/

相关文章:

c++ - va_arg 给出运行时错误

c - 为什么调用 setjmp() 中的函数会发生段错误?

c - scanf 行为不正常

c - 对同一字符串 C 第二次执行 strcpy 时出现奇怪的段错误

c++ - 多对象手写单链表段错误

c++ - 模板化类的模板化构造函数的显式模板特化

c++ - 如何无错误退出 X11 程序

c++ - 归并排序实现

linux - 段错误(核心转储)代码显示此错误

c - 在c中写入文件时出现段错误