gpt4 book ai didi

c - C中灵活的数组大小

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:08 27 4
gpt4 key购买 nike

我正在用 C 编写 MCMC 算法,但遇到了一个小问题。该算法的思想是推断群体中的群体数量。所以假设我们从 k 个组开始。其中 k 的第一个值由用户给出或随机选择。现在,在算法的每一步,k 都可以减少 1、增加 1 或保持不变。我为每个组设置了一些变量;

double *mu;
double *lambda;
double **A

mu 和 lambda 确实是 k 个元素的数组,A 是 kxN 的二维数组。 N 也会在每次迭代时发生变化。我有一些数据 y1, y2,..., yn 所以在每次迭代中我都会做一些处理,为参数提出新值并决定是否移动 k。

到目前为止,我已经绑定(bind)使用 malloc 和 realloc 来处理我的参数维度的所有这些变化,但我必须迭代这个算法让我们说 100,000 次,所以在某些时候它会崩溃。如果我在第三次迭代时以 k=10 开始!

所以两个问题:

  • 我可以在每次迭代时使用 realloc 吗?或者这是我的大错误。如果是,那么我想应该检查我的代码!
  • 如果不是,我该怎么办,有什么建议吗?

最佳答案

我会考虑在每次迭代时更改您的存储。 realloc 带来相当大的开销(在最坏的情况下,它必须每次都复制整个数组)。

您能否在启动时简单地分配最大尺寸,然后只使用更少的尺寸?或者至少,只有 realloc 通过将容量加倍来增加 存储需求(从而模仿 std::vector 的操作方式) .

[顺便说一句,我不知道您的应用程序崩溃的原因,因为您没有向我们提供任何详细信息(例如,您收到的错误消息,或者您通过调试发现的内容。但我猜你某处有错误!]

关于c - C中灵活的数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6154801/

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