C内存分配有什么问题?

时间:2017-04-30 19:40:53

标签: c memory

(已解决)此行(在C中)

(*ptr).firstNode = malloc(sizeof(node));

给出了这个错误:

  分配到类型'节点'

[错误]不兼容的类型来自类型' void *'

所以,左边的部分是"节点" (这是我创建的结构),为什么这不起作用?有人知道吗?任何帮助将不胜感激,如有必要,将发布结构声明。

的Structs:

typedef struct node{
    int idade;
    struct node * next;
    struct node * prev;
}node;

typedef struct {
    node firstNode;
    node lastNode;
}dll;

伙计们,这个问题已经解决,感谢所有回答的人,将firstNode和lastNode添加为指针会更好吗?或者让它们成为结构本身会更好吗?

我在这里尝试的只是学习如何初始化和处理双链表,这只是列表本身的创建,下一个函数将从顶部和底部删除,等​​等。

2 个答案:

答案 0 :(得分:3)

malloc返回void *,错误显示为..

  从类型分配类型'node'时,

[Error]不兼容的类型   'void *'

在左侧需要一个指针,在这种情况下应该是node*类型。

也许您应该像这样更改结构定义

typedef struct {
    node *firstNode; // pointer 
    node *lastNode;
}dll;

然后(*ptr).firstNode = (node *) malloc(sizeof(node));就可以了。

答案 1 :(得分:0)

尝试:

typedef struct {
    node *firstNode;
    node *lastNode;
}dll;

由于评论中的其他人已经注意到,firstNode不是指针,而是结构。