【发布时间】:2012-05-01 18:45:28
【问题描述】:
我有一个数组
char* temp;
temp=kmalloc(3,GFP_KERNEL);
每次调用此函数时,我都需要扩展此数组 注意:realloc不能在linux内核中使用我不知道它是否存在
【问题讨论】:
标签: c linux-kernel
我有一个数组
char* temp;
temp=kmalloc(3,GFP_KERNEL);
每次调用此函数时,我都需要扩展此数组 注意:realloc不能在linux内核中使用我不知道它是否存在
【问题讨论】:
标签: c linux-kernel
滚动您自己的 realloc,但请注意 realloc 是一个设计不佳的函数接口。只需使用 kmalloc 分配一个新缓冲区并将旧数据 memcpy 到新缓冲区中;如果 realloc 不能在适当的位置扩展缓冲区,这基本上就是 realloc 所做的一切。
【讨论】:
<linux/slab.h> 确实有 krealloc() 与 kmalloc() 一起使用。这是在 2007 年/内核 2.6.22 中添加的。
【讨论】:
我建议您应该使用基于映射内存(或类似的东西)的固定大小的环形缓冲区,而不是每次都扩大分配。
【讨论】: