Sadece c'yi kullanmaya başladım ve yığınının nerede kesildiğini anlayamıyorum. Pek çok benzer soru var ama cevap burada bireyseldir. Umarım birileri bana yanlış yaptıklarımı söyleyebilir.Çalışma Zamanı Denetimi Arızası # 2: 'Güç' değişkeni etrafında yığın bozuk
Platform penceredir, ancak bir OS kursu için de XV6 (Unix sürüm 6'nın basitleştirilmiş sürümü) üzerinde çalışılması gerekir.
İki yapılar vardır:
struct elem {
unsigned char power; // the power of this item
float coef; // the coefficient
};
struct item {
struct elem* elem;
struct item* next;
};
ve genel değişken vardır: Aşağıdaki yöntemi hata ayıklama
struct item* polynom1;
, iade ifade azından ben bir istisna olsun "çalışma zamanı kontrol Başarısızlık # 2: değişken 'iktidar' etrafında Stack "bozuk:
struct item* readPolynom()
{
struct item* res = (struct item*)malloc(sizeof(struct item));
struct item* nextPoly = res;
unsigned char power;
float coef;
res->next = NULL;
do
{
scanf("%hu%f", &power, &coef);
if (power != 0 || coef != 0)
{
nextPoly->elem = (struct elem*) malloc(sizeof(struct elem));
nextPoly->elem->coef = coef;
nextPoly->elem->power = power;
nextPoly->next = (struct item*) malloc(sizeof(struct item));
nextPoly = nextPoly->next;
}
} while (power != 0 || coef != 0);
nextPoly = NULL;
return res;
}
girdidir: 5 5.5 (gir) 4 4 (gir) 0 0 (giriş). Önemli - 'res' doğru değerleri alır.
% hu yerine% hhu /% u değiştirmeyi denedim, ancak aynı sonucu aldım. Ayrıca "free (nextPoly)" eklemeyi de denedim; önce "nextPoly = NULL;" - hala aynı.
şimdiden teşekkürler! ? `Power` bir` işaretsiz char` ve `olan% hu`` scanf söyler: :)
platformu tarafından
....... – pm100
Basit değiştirin 'İmzasız bir kısa '. – immibis
Bu yorumu asıl gönderiye de ekleyeceğim. Platform penceredir, ancak bir OS kursu için de XV6 (Unix sürüm 6'nın basitleştirilmiş sürümü) üzerinde çalışılması gerekiyor. immibis - Ben% hhu ve% u da denedim ama aynı sonucu aldım. –