gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:17:49 24 4
gpt4 key购买 nike

我正在实现一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com