gpt4 book ai didi

c++ - vector 的下标有时超出范围

转载 作者:行者123 更新时间:2023-11-28 07:42:34 24 4
gpt4 key购买 nike

我有一个遗传算法程序,一切都是使用 vector 动态分配的。编译时设置的世代数或每代个体数无处可寻。

我尝试了 500、1000、2000 代,运行完美。然后我尝试了10,000代。它告诉我调试断言失败, vector 下标在第 4966 代超出范围。

我用相同的参数再次尝试了两次,10,000 代,它运行良好。

我又试了一次,7565代报错

奇怪的是,有时它运行得很好,有时却出现错误。特别是考虑到一切都是使用 vector 完成的。

关于问题可能来自何处的任何想法?也许由于某种原因 Debug模式有问题?

最佳答案

问题来自堆栈损坏或最有可能来自索引越界访问。事实上,在某些情况下您的代码崩溃表明存在问题。如果您的代码是多线程的,问题可能是因为如果以给定的顺序执行操作,您的代码将尝试访问超出 vector 范围的内容。

我的建议是使用 valgrind 运行您的代码看看它会说什么。通常它有助于解决类似的问题。

另请注意,在某些情况下您的代码不会崩溃,这并不意味着它可以完美运行。您可能仍然存在堆栈损坏或类似问题。

关于c++ - vector 的下标有时超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15501447/

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