繁体   English   中英

C-动态初始化数组

[英]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

是。 内存未初始化,您仅获得指向内存块的指针。

您需要memset进行初始化:

memset(pages, 0, npages * sizeof(int));

另外,除非我弄错了, kmalloc接受第二个参数 ,即要分配的内存类型。

或者,您可以使用内核函数kzalloc

int * pages;
pages = (int *)kzalloc(npages * sizeof(int), GFP_KERNEL);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM