c++ - 第 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;
}
它显示编译错误。
解决方案
正如您在评论中提到的,您为结构分配的内存不足。
您的结构需要 4 个字节 x 3(整数 4 个,每个指针 4 个)。
您只分配 4 个字节。原因是您将sizeof
函数指针传递给结构而不是结构。因此,您为指向结构而不是结构的指针分配内存。
您需要更改sizeof(NODE)
为sizeof(node)
.
PS 某些类型(如int
指针)的大小取决于计算机体系结构。通常在 32 位机器上,它们比在 64 位机器上要小。
推荐阅读
- windows - 如何释放由 Windows 内核驱动程序中的 RtlQueryRegistryValues 分配的内存
- html - 无法在 Safari 中设置“全部:未设置”按钮的文本颜色
- regex - Solr 在文件名上应用正则表达式以搜索不区分大小写
- python - ElementTree 的 .write() 将带有 " 的字符串更改为 "
- laravel - Laravel 更新对象后没有返回正确的外键
- javascript - 从顶部和底部偏移固定 div
- javascript - VueJs 中的 Highmaps .... 将 State 传递给 mapOptions
- python - 使用python从不同的excel文件中添加数据
- stata - 检查变量是否在减少
- javascript - 我希望图像根据我选择去的地方而改变