gpt4 book ai didi

c - 奇怪的段错误

转载 作者:行者123 更新时间:2023-11-30 15:55:34 24 4
gpt4 key购买 nike

我定义了一个随机函数 ( int random(int sup, int seed) ),它返回 0 到 sup-1 之间的值。我定义了一个结构体point,其中pos_parents和population是二维数组。交换函数交换 v 数组的元素,该数组是“索引”数组。完成所有操作都是为了将​​ par_n 成员从总体成员中排序到 pos_parents 中,而不会对同一成员进行两次排序。

这会导致段错误。

如果我替换变量r里面population[v[r]][j]有了明确的值,那么它就可以正常工作了。这怎么可能?我已经尝试过随机函数,似乎没有任何问题。

此外,当发生段错误时,printf 甚至不会激活第一个循环。

point population[pop_size][array_size];
point pos_parents[4*par_n][array_size];
int v[pop_size];

for (i=0; i<4*par_n;i++)
v[i]=i;

for(t=0;t<time_limit;t++) //The cycle of life
{
for(i=0;i<4*par_n;i++)
{
r=random(pop_size-i,i);
printf("%d\t",r);

for(j=0;j<array_size;j++)
{
pos_parents[i][j]=population[v[r]][j];
}
swap(&(v[r]),&(v[pop_size-1-i]));
}

执行时输入 3(路线位置-数组大小), 8(pop_size), 1(时间限制), 1 (par_n)

这是整个代码(不到150行),总是在time_limit中插入1,因为我还没有完成循环。 https://docs.google.com/open?id=0ByylOngTmkJddVZqbGs1cS1IZkE

附注我正在尝试编写一个进化算法,用于路线优化

最佳答案

v[i] = i; 的循环从 04 * par_n,但是 v > 是一个大小为 pop_size 的数组。这看起来像是一个等待出现的越界问题。对于 r = random(pop_size - i, i); 中的计数器 i 也是如此,因为 i 中使用v[i].

关于c - 奇怪的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12020521/

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