c-分配新值时出现未处理的异常



我正在学习链表,并想制作一个多项式的结构表示。节点的创建、插入和删除工作正常,但当试图将值从一个多项式复制到生成的多项式时,我会遇到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时,您正在取消引用未初始化的指针(其值为不确定),从而导致未定义的行为并可能发生崩溃。

您需要初始化该结构,包括使其中的指针指向有效内存。

相关内容

  • 没有找到相关文章

最新更新