第9行的给定代码有什么错误?

时间:2019-07-05 06:25:20

标签: c++ pointers struct typedef dynamic-memory-allocation

我已经创建了一个结构指针的别名为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;
}

显示编译错误。

1 个答案:

答案 0 :(得分:2)

正如您在评论中提到的那样,您没有为结构分配足够的内存。

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

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

您需要将sizeof(NODE)更改为sizeof(node)

P.S。诸如int之类的某些类型和指针的大小取决于计算机体系结构。通常在32位计算机上,它们要比64位计算机小。