我在分配内存时遇到了问题,就是Linux内核空间。我用下面的两个结构中创建了链接列表:Linux内核空间中的动态内存分配
struct Node{
char *ptr;
struct Node *next;
};
struct List{
struct Node *head;
struct Node *tail;
};
现在,当我尝试和分配列表结构[编辑,以反映正确的代码]:
struct List *ll = kmalloc(sizeof(struct List), GFP_KERNEL)
我得到:
error: Initializer element is not constant
我在这里做错了什么?我想补充的指针节点在我的列表结构因此我会通过添加它们:
struct Node n* = kmalloc(sizeof(Node));
n -> ptr = "Blah";
n -> next = NULL;
ll -> head = n;
我很确定Linux内核头文件有链接列表的一些宏.... [here](http://kernelnewbies.org/FAQ/LinkedLists) –
谢谢,如果这不起作用,我会检查一下。我之前看到了这一点,但认为自己编码会更容易。 C吓到我了! – Alex
如果您希望稍后将代码提交到内核中,您应该正确使用*内核的习惯和编码规则。如果您被C吓到了,则应该先编码用户级应用程序,而不是内核代码。 –