我正在学习链表并想制作多项式的结构表示。节点的创建、插入和删除工作正常,但是当尝试将值从一个多项式复制到结果多项式时,我遇到了 Unhandled exception ... Access reading violation
错误。为什么这个函数会导致这个?
struct Fraction {
int num;
int denom;
};
struct PolyTerm {
int exp;
struct Fraction* coe;
};
struct PolyList {
struct PolyTerm* polyTerm;
struct PolyList* next;
};
typedef struct Fraction Fraction;
typedef struct PolyTerm PolyTerm;
typedef struct PolyList PolyList;
PolyList* test(PolyList* list1, PolyList* list2) {
PolyList* result = (PolyList*)malloc(sizeof(PolyList));
result->polyTerm->exp = (list2)->polyTerm->coe;
result->polyTerm->coe = (list1)->polyTerm->coe;
return result;
}
我已经通过调试器运行代码,这是程序中断的行。
result->polyTerm->exp = (list2)->polyTerm->coe;
这是我的堆栈跟踪
Unhandled exception at 0x00DC290A in PolyFun.exe: 0xC0000005: Access violation writing location 0xCDCDCDCD.
最佳答案
当您为 PolyList
结构分配内存时,它只会为该结构分配内存。该结构的成员未初始化,指针不会指向任何有效内存,因此当您取消引用 result->polyTerm
时,您正在取消引用未初始化的指针(其值为 indeterminate) 导致未定义的行为和可能的崩溃。
您需要初始化该结构,包括使其中的指针指向有效内存。
关于c - 分配新值时出现未处理的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36256609/