题
我正在尝试找到int myArray [n]的等价物,除了我不知道没有输入的是什么。
以下代码是否有效? (我需要使用kmalloc而不是malloc)。
int * pages;
//... later, after we find out n...
pages = (int *)kmalloc(npages * sizeof(int));
使用gdb进行调试,值页面[0]似乎不是0 - 这是预期的吗?
其他提示
malloc
返回指向堆已为您的阵列分配的某个位置的指针。它没有初始化那个内存。您可以使用 calloc
代替 malloc
来初始化内存(设置为零),或者在分配内存后可以使用 memset
并自己设置内存为零。
由于您使用的是 kmalloc
,因此您可能必须使用 memset
;我不相信有一个 cmalloc
用于在内核中分配初始化内存。
或者你可以使用内核函数 kzalloc :
int * pages;
pages = (int *)kzalloc(npages * sizeof(int), GFP_KERNEL);
不隶属于 StackOverflow