二级指针如**p如何初始化?

结构体代码:

    typedef struct {
        ElemType data;
        struct BiTNode *lchild, *rchild;
    } BiTNode,*BiTree;

    typedef struct {
        BiTNode **base;
        BiTNode **top;
    } AssistStack;

定义一个结构体指针,如何初始化该结构体指针指向的结构体中的二级指针?

    AssistStack *S = (AssistStack*)malloc(sizeof(AssistStack));
    S->base = (BiTNode**)malloc(sizeof(BiTNode*));
    if (!S->base)    exit(OVERFLOW);
    S->top = S->base;

如果像上面这样运行完会丢出错误

0x7708E8FB (ntdll.dll) (data-structure.exe 中)处有未经处理的异常: 0xC0000374: 堆已损坏。 (参数: 0x770C4270)。

大致知道下面这句代码是不行的

S->base = (BiTNode*)malloc(sizeof(BiTNode));

求指导怎么处理。谢谢

阅读 4.2k
1 个回答
S->top = S->base = (BiTNode**)malloc(ASSIST_STACK_SIZE * sizeof(BiTNode*));
*(S->top) = *(S->base) = (BiTNode*)malloc(sizeof(BiTNode));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进