首页 > 解决方案 > 第 9 行给定代码中的错误是什么?

问题描述

我已经将结构指针的别名创建为 NODE。使用它我正在分配内存空间,但它显示错误。错误是什么?

struct node{
    int data;
    struct node *left;
    struct node *right;
};

typedef struct node *NODE;

NODE getnode()
{
    NODE p=(NODE)malloc(sizeof(NODE));
    return p;
}

它显示编译错误。

标签: c++pointersstructtypedefdynamic-memory-allocation

解决方案


正如您在评论中提到的,您为结构分配的内存不足。

您的结构需要 4 个字节 x 3(整数 4 个,每个指针 4 个)。

您只分配 4 个字节。原因是您将sizeof函数指针传递给结构而不是结构因此,您为指向结构而不是结构的指针分配内存。

您需要更改sizeof(NODE)sizeof(node).

PS 某些类型(如int指针)的大小取决于计算机体系结构。通常在 32 位机器上,它们比在 64 位机器上要小。


推荐阅读