0
我剛開始再次使用c,我無法弄清楚我在哪裏中斷堆棧。 有很多類似的問題,但答案是個人在這裏。 我希望有人能告訴我我做錯了什麼。運行時檢查失敗#2:變量'power'周圍的堆棧損壞
該平臺是windows,但是它是用於OS課程的,因此它應該可以在XV6(簡化版本的Unix版本6)上運行。
我有兩個結構:
struct elem {
unsigned char power; // the power of this item
float coef; // the coefficient
};
struct item {
struct elem* elem;
struct item* next;
};
,我有一個全局變量:
struct item* polynom1;
當調試下面的方法,在return語句我得到一個異常「運行時檢查失敗#2:圍繞變量「電源」堆棧已損壞「:
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;
}
輸入是:5 5.5(輸入)4 4 (回車)0 0(回車)。 重要 - 'res'獲得正確的值。
我嘗試用%hhu /%u代替%hu,但我得到了相同的結果。 我也嘗試加入「free(nextPoly);」在「nextPoly = NULL;」之前- 還是一樣。
在此先感謝! :)
平臺....... – pm100
?很簡單:'power'是'無符號char'和'%hu'告訴'scanf函數'這是一個'無符號短'。 – immibis
我也會將此評論添加到實際文章中。這個平臺是windows的,但它是一個操作系統課程,所以它應該可以在XV6(Unix版本6的簡化版本)上運行。 immibis - 我嘗試了%hhu和%u,但我得到了同樣的結果。 –