gpt4 book ai didi

c - KdTree C 实现导致核心转储

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

我正在处理一个核心转储问题,但我找不到解决方案。任何形式的帮助将不胜感激,因为我已经绝望了。

我假设在第二次执行构建函数时出现错误,但我不知道有什么大惊小怪的。

http://pastebin.com/XwW33VY8

struct node *BuildKdTree(struct point *S, int d, int n)
{
struct node *v;

if(n==1)
{
v->l.x=S[0].x;
v->l.y=S[0].y;
}
else
{
int i, n1, n2;
float mE, mV;
struct point *S1, *S2;

S1=(struct point*)malloc(sizeof(struct point)*(n));
S2=(struct point*)malloc(sizeof(struct point)*(n));

if(d%2 == 0)
{
bubbleSortX(S, n);
mV=medianValueX(S, n);
v->l.x=mV;
mE=medianElement(n);

for(n1=0;n1<(int)mE;n1++)
{
S1[n1]=S[n1];
}

for(n2=0, i=(int)mE;i<n;n2++, i++)
{
S2[n2]=S[i];
}
}
else
{
bubbleSortY(S, n);
mV=medianValueY(S, n);
v->l.y=mV;
mE=medianElement(n);

for(n1=0;n1<(int)mE;n1++)
{
S1[n1]=S[n1];
}

for(n2=0, i=(int)mE;i<n;n2++, i++)
{
S2[n2]=S[i];
}
}

v->leftChild=BuildKdTree(S1, d+1, n1);
v->rightChild=BuildKdTree(S2, d+1, n2);
}

return v;
}

提前谢谢您。

最佳答案

您将变量v声明为指向struct node的指针,但没有初始化该指针。未初始化的局部(非静态)变量具有不确定值。

使用未初始化的本地(非静态)变量会导致未定义的行为,这是崩溃的一个非常常见的原因。

现代编译器擅长检测未初始化变量的使用,并发出警告。不过,您可能必须启用额外的警告,因此当使用例如gcc 添加标志 -Wall,您应该会收到有关此的警告。

关于c - KdTree C 实现导致核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30591895/

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