gpt4 book ai didi

c++ - 使用复杂数据结构时内存泄漏( vector 数组的数组)

转载 作者:行者123 更新时间:2023-11-30 04:16:47 25 4
gpt4 key购买 nike

我有一个复杂的数据结构定义为:

array<array<array<vector<arc>, 2>, n_ports + 2>, n_times> destinations;

其中arrayvectorstd::array 的缩写和 std::vector , n_ports 和 n_times 是 unsigned int s 和 arcstruct :

struct node { uint port; bool pickup; uint time; };
struct arc { node destination; float cost; };

基本上,对于一个三元组 (i,j,k),其中 0 <= i < n_times , 0 <= j < n_ports+2 , 0 <= k < 2 ,我关联了一个弧 vector ,其维度我无法先验知道。

这些 vector 不是按顺序创建的,它们的元素也不是 push_back ' 按顺序编辑。

我遇到的问题是,我发现自己的弧线比应有的多得多,我怀疑这些弧线是早先创建的弧线的痕迹,然后当 vector 必须调整大小。

Here是我设法创建的我正在做的事情的最简单的例子,从我实际从事的工作开始,它显示了问题。

感谢任何帮助。我使用了错误的数据结构吗?我应该自己清理一些东西吗?等

最佳答案

问题是您得到的时间和端口索引是倒过来的。您的数组大小为端口索引 n_times 和时间索引 n_ports + 2 。这可能导致某处的数组访问越界。

请记住,std::array 比原始数组好很多,但它仍然不会进行边界检查,除非您使用 at()

关于c++ - 使用复杂数据结构时内存泄漏( vector 数组的数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17514038/

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