作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在实现一个 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/
我是一名优秀的程序员,十分优秀!