[英]C - Dynamically initializing arrays
我试图找到int myArray [n]的等效项,除了我不知道没有输入的n是什么。
下面的代码应该工作吗? (我需要使用kmalloc而不是malloc)。
int * pages;
//... later, after we find out n...
pages = (int *)kmalloc(npages * sizeof(int));
使用gdb进行调试时,值pages [0]似乎不为0-这是预期的吗?
malloc
返回一个指针,该指针指向它已为数组分配的堆上的某个位置。 它不会初始化该内存。 您可以使用calloc
而不是malloc
来初始化内存(设置为零),或者可以在分配内存并将内存设置为零后使用memset
。
由于您正在使用kmalloc
,因此您可能必须使用memset
; 我不相信在内核中有一个用于分配初始化内存的cmalloc
。
或者,您可以使用内核函数kzalloc :
int * pages;
pages = (int *)kzalloc(npages * sizeof(int), GFP_KERNEL);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.