4

私は配列を持っています

char* temp;
temp=kmalloc(3,GFP_KERNEL);

この関数を呼び出すたびにこの配列を展開する必要があります注:ReallocはLinuxカーネルでは使用できません。存在するかどうかはわかりません。

4

4 に答える 4

7

独自のreallocをロールしますが、reallocは不十分に設計された関数インターフェースであることに注意してください。kmallocとmemcpyを使用して新しいバッファを割り当て、古いデータを新しいバッファに割り当てるだけです。バッファを適切に拡張できない場合、reallocが実行するのは基本的にこれだけです。

于 2012-05-01T18:52:50.600 に答える
4

<linux/slab.h>krealloc()と一緒に行く必要がありますkmalloc()。これは2007/カーネル2.6.22で追加されました。

于 2012-05-01T22:40:51.123 に答える
1

毎回割り当てを拡張するのではなく、mmapされたメモリ(またはそのようなもの)に基づく固定サイズのリングバッファを使用することをお勧めします。

于 2012-05-01T19:02:18.453 に答える
0

LinuxのFlexibleArray実装のようなものを使用したいと思うかもしれません。http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/flexible-arrays.txt;h=df904aec99044f8056ac530b9e9dc6de8f26f73e;hb=HEADを参照して ください

于 2012-05-02T08:34:06.200 に答える