c - Linux 内核空间中的动态内存分配

标签 c linux memory-management struct kernel

我在为 Linux 内核空间分配内存时遇到问题。我使用以下两个结构创建了一个链表:

struct Node{
    char *ptr;
    struct Node *next;
};

struct List{
    struct Node *head;
    struct Node *tail;
};

现在当我尝试分配一个列表结构时[编辑以反射(reflect)正确的代码]:

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;

最佳答案

不是

struct List ll*;

但是

struct List *ll;

你在你的类型定义中是正确的,但在 kmalloc 的两行中都是错误的。

关于c - Linux 内核空间中的动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19625440/

相关文章:

c++ - Linux _SC_PHYS_PAGES 在 Mac OS X 上不工作

java - 线程消耗的内存

c++ - 为什么我不能重新分配以前在 C++ 堆栈上分配的变量( 'Frame' 的复制赋值运算符被隐式删除)?

c - 无法读取指针数组的元素,第 0 个元素除外

c - C 中的 fprintf() 函数无法正常工作

c++ - Bash 自动完成选项而不运行应用程序

linux - 启动多个 FFmpeg session

ios - 使用 ARC 时释放 NSMutableArray

c - C中的'\0'和printf()

c - C中通过void函数初始化指向结构体的指针