我已经创建了一个结构指针的别名为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;
}
显示编译错误。
答案 0 :(得分:2)
正如您在评论中提到的那样,您没有为结构分配足够的内存。
您的结构占用4个字节x 3(4个整数,每个指针4个)。
您仅分配4个字节。原因是您传递给sizeof
函数指向结构的指针,而不是结构。因此,您为结构指针而不是结构分配了内存。
您需要将sizeof(NODE)
更改为sizeof(node)
。
P.S。诸如int
之类的某些类型和指针的大小取决于计算机体系结构。通常在32位计算机上,它们要比64位计算机小。