Chi*_*nna 0 c linux memory-management dynamic linux-kernel
我们可以分配动态内存吗?我知道malloc()需要以字节为单位的内存大小.我们可以编写一个以位为单位分配内存的内核模块吗?用户程序应该调用这个模块来分配内存.如果你们说是的话,我会开始研究它.
如果需要分配足够的内存来存储numBits位,则可以除以numBits8,向上舍入,并malloc使用该字节数进行调用.最后你可能会有一些额外的位,但这应该不是问题:
void *allocBits(size_t numBits) {
return malloc((numBits + 7) / 8);
}
Run Code Online (Sandbox Code Playgroud)
首先,你不能分配一点(在现代系统中甚至不是一个字节),因为你无法解决它.内存地址始终为数据提供数据总线的宽度(例如.64Bit).
如果你想模仿按位分配@ godel9是对的.我更喜欢
ptr = malloc((numbits % 8) + 1).
Run Code Online (Sandbox Code Playgroud)