我有一个数组
char* temp;
temp=kmalloc(3,GFP_KERNEL);
我每次调用这个函数都需要扩展这个数组注意:Realloc不能在linux内核中使用我不知道它是否存在
我有一个数组
char* temp;
temp=kmalloc(3,GFP_KERNEL);
我每次调用这个函数都需要扩展这个数组注意:Realloc不能在linux内核中使用我不知道它是否存在
滚动你自己的 realloc 但请注意 realloc 是一个设计不佳的函数接口。只需使用 kmalloc 分配一个新缓冲区并将旧数据 memcpy 到新缓冲区中;如果它不能扩展缓冲区,这基本上就是 realloc 所做的一切。
<linux/slab.h>
确实必须krealloc()
去kmalloc()
。这是在 2007 / 内核 2.6.22 中添加的。
我建议您应该使用基于映射内存(或类似的东西)的固定大小的环形缓冲区,而不是每次都扩大分配。
您可能想要使用类似 Linux 的灵活数组实现之类的东西。请参阅 http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/flexible-arrays.txt;h=df904aec99044f8056ac530b9e9dc6de8f26f73e;hb=HEAD