gpt4 book ai didi

c - C语言 : Why does my assignment statement ruin my data?

转载 作者:太空宇宙 更新时间:2023-11-04 05:30:47 25 4
gpt4 key购买 nike

看看这段代码:

void insert(Poly **A, int degree, int coef2) {
heapSize = heapSize+1;
Poly *key;

if (heapSize == 1) { // heap was originally empty
key->coef = coef2;
key->degree = degree;
A[heapSize-1] = key;
return;
}

// create an "minus infinity" degree poly
int keyDegree = degree;

key->coef = coef2;
key->degree = MIN_INT;

A[heapSize-1] = key ;
heapIncreaseKey(A, heapSize-1, keyDegree);
}

Poly 是一个结构体,其成员都是 int 类型。 “A”是一个 Poly 指针数组。每当语句“A[heapSize-1] = key”(在 if block 中)被执行时,“key”的成员由于某种原因变为“垃圾”值。例如,就在该语句执行之前,“key”成员的值为 5 和 6。执行该语句后,这些值变为一些 8 位垃圾数字。谁能告诉我为什么?谢谢

最佳答案

你不见了

key = malloc(sizeof(Poly));

声明 key 为您提供了一个指针,但它并未指向有效位置。取消引用 key 会导致未定义的行为。

编辑

此外,看起来heapsize 是一个全局常量,而A 是指向堆的指针。用一个全局变量记录非全局变量的大小似乎很奇怪。

我会让 heapsize 成为一个与 A 具有相同范围的变量,并将指向它的指针作为参数传递给处理 A 的函数>.

关于c - C语言 : Why does my assignment statement ruin my data?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6479006/

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